這是我的測試代碼: 我使用的是win32草莓perl。utf8 :: all - 如何強制<STDIN/OUT>轉換爲big-5
use utf8::all; my $input = ;
當鑰匙在中國性格,
它顯示了錯誤:
utf8 "\xAD" does not map to unicode .....
我還寫有UTF8腳本::所有打印中國字符,不能成功。 如果只使用utf8或不使用utf8,我可以通過編碼來打印中文字符。
如何設置爲其他編碼?
這是我的測試代碼: 我使用的是win32草莓perl。utf8 :: all - 如何強制<STDIN/OUT>轉換爲big-5
use utf8::all; my $input = ;
當鑰匙在中國性格,
它顯示了錯誤:
utf8 "\xAD" does not map to unicode .....
我還寫有UTF8腳本::所有打印中國字符,不能成功。 如果只使用utf8或不使用utf8,我可以通過編碼來打印中文字符。
如何設置爲其他編碼?
有一種解決方法可將Windows命令提示符的代碼頁設置爲UTF-8,但它不是可部署的解決方案。
我的建議是不要打擾,只需在Perl中使用Big5(並且堅持使用CP950/zh-tw Windows),或者使用文本文件I/O進行輸入/輸出。
或者,冒險,使用cgywin中的bash/perl,而不是使用UTF-8。
How to set the to other encoding?
與utf8::all
,你不能。編碼UTF-8
在其中的任何地方都是硬編碼的。畢竟,該模塊被命名爲utf8::all
而不是big5::all
。
您必須對進行解碼/編碼明確,請參閱http://p3rl.org/UNI。你說你在Windows上,所以使用編碼cp950
。
use Encode qw(decode encode);
my @arguments_as_characters = decode 'cp950', @ARGV;
open my $file_handle, '<:encoding(cp950)', $file_name;
print encode 'cp950', $data_to_stdout;
How to open STDIN, STDOUT in cp950?
當你運行你的程序,標準流是已經打開!您可以使用binmode
修改I/O layer。
binmode STDOUT, ':encoding(cp950)';
use open IO => ':encoding(big5)';
或
use open IO => ':encoding(cp950)';
或
use open IO => ':locale';
如何CP950開STDIN,STDOUT? – Weiyan