Windows上的Perl:编码问题

时间:2013-03-05 12:56:53

标签: windows perl encoding activeperl

我的Perl脚本有问题。在类UNIX系统中,它会将所有Unicode字符(如ä)正确打印到控制台。在Windows命令行中,字符被破坏为无意义的字形。有一种简单的方法可以避免这种情况吗?我正在使用use utf8;

提前致谢。

1 个答案:

答案 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