我的Perl腳本有問題。在類UNIX系統中,它將所有Unicode字符(如ä
)正確輸出到控制檯。在Windows命令行中,字符被分解爲無意義的字形。有沒有簡單的方法來避免這種情況?我正在使用use utf8;
。Windows上的Perl:編碼問題
在此先感謝。
我的Perl腳本有問題。在類UNIX系統中,它將所有Unicode字符(如ä
)正確輸出到控制檯。在Windows命令行中,字符被分解爲無意義的字形。有沒有簡單的方法來避免這種情況?我正在使用use utf8;
。Windows上的Perl:編碼問題
在此先感謝。
use utf8;
只是告訴Perl你的源碼是使用UTF-8編碼的。
它也不適用於unix。有些字符串不能正確打印(print chr(0xE9);
),而且大多數字符串會打印「寬字符」警告(print chr(0x2660);
)。您需要解碼輸入並對輸出進行編碼。
在UNIX系統中,這是usuaully
use open ':std', ':encoding(UTF-8)';
在Windows系統中,你需要使用chcp
找到控制檯的角色頁面。 (437我)
use open ':std', ':encoding(cp437)'; # Encoding used by console
use open IO => ':encoding(cp1252)'; # Encoding used by files
在Windows 7 cmd.exe中嘗試了這一點,它只會產生錯誤。 'C:/strawberry/perl/lib/encoding.pm第120行哈希賦值中元素奇數。encoding:C:\ Users \ Peter \ perl \ foo.pl第9行的未知編碼':std'同樣的':encoding ...'和'IO => ..')。我最終得到的工作是將cmd.exe字體更改爲Lucida控制檯,chcp 1252,然後在腳本中使用'use encoding'cp1252';'。 – TLP 2013-03-05 13:52:09
@TLP,已修復。應該是「開放」而不是「編碼」。切勿使用編碼。 – ikegami 2013-03-05 13:56:12
+1正常。哇,打印字符太麻煩了。 – TLP 2013-03-05 14:13:21
你檢查從這個問題的答案:http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl – 2013-03-05 13:00:03
另一個問題考慮在Windows控制檯顯示unicode:http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how – 2013-03-05 13:01:58
討厭恨討厭這個'utf8'在可愛的'Perl' – gaussblurinc 2013-03-05 14:29:25