我使用Perl來讀取UTF-16LE文件在Windows 7爲什麼讀取UTF-16LE文件不會轉換爲「 r n」變成了「 n」在Windows
如果我在讀用下面的代碼然後每個「\ r \ n」個文件將在存儲器被轉換成「\ n」個ASCII文件:如果我在UTF-16LE(視窗1200)讀
open CUR_FILE, "<", $asciiFile;
用以下代碼文件,當我嘗試用換行符正則表達式行時,這種不一致性會導致問題。
open CUR_FILE, "<:encoding(UTF-16LE)", $utf16leFile;
然後「\ r \ n」將保持不變。
更新:
對於UTF-16LE文件的每一行:
line =~ /(.*)$/
那麼字符串匹配$ 1將包括一個爲 「\ r」 結尾......
它看起來像一個bug。據我記得,Perl應該保證'\ n'適用於內部編碼的東西的換行匹配。絕對適用於Windows上的其他編碼。 – 2010-04-13 03:31:00
您正在使用哪個版本的Perl?如果它不是5.10.1(或5.12.RCn),那麼你能切換到更新的版本嗎? – 2010-04-13 04:35:41
我使用的是5.10.0,但升級到5.10.1後,問題依然存在(Windows 64bit) – 2010-04-13 05:13:58