我試圖將perl腳本轉換爲powershell腳本。當腳本正在讀取日誌文件並且必須獲取文件的編碼時,我遇到了一部分問題。獲取從文件中讀取的字符串編碼
下面是Perl代碼:
sub get_encoding {
my $f = shift;
my $fh;
return "ASCII" if (!open ($fh,"<",$f));
my $b = "";
my $n = read ($fh,$b,2);
close ($fh);
return "UTF-16" if ($b eq "\x{ff}\x{fe}");
return "ASCII";
}
它被稱爲像這樣:
get_encoding ($l->{file})
其中$ L - > {}文件是日誌文件的路徑。
任何人能解釋這是怎麼回事,尤其是在這一行:
return "UTF-16" if ($b eq "\x{ff}\x{fe}");
如果有人知道的好方法在PowerShell中做到這一點,任何提示都很大apreciated。
吉斯利
http://enwp.org/UTF-16#Byte_order_encoding_schemes – daxim
這條線對我來說看起來像一個錯誤。我認爲它應該讀取'return「UTF-16」if($ b eq「\ xFF \ xFE」);' - 即:它應該將從文件讀入的字節與字節串而不是字符串進行比較。 '「\ xE9」'是包含單個字節0xE9的字節字符串。 '「\ x {E9}」是包含Unicode代碼點0 + 00E9的字符的字符串。 –