我的Perl脚本有问题。在类UNIX系统中,它会将所有Unicode字符(如ä
)正确打印到控制台。在Windows命令行中,字符被破坏为无意义的字形。有一种简单的方法可以避免这种情况吗?我正在使用use utf8;
。
提前致谢。
答案 0 :(得分:12)
use utf8;
只是告诉Perl您的源代码是使用UTF-8编码的。
它也不适用于unix。有些字符串无法正确打印(print chr(0xE9);
),大多数字符串会打印“宽字符”警告(print chr(0x2660);
)。您需要解码输入并对输出进行编码。
在unix系统中,这通常是
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