我的 Perl 脚本有问题。在类 UNIX 系统中,它会将所有 Unicode 字符(如 ä
)正确地打印到控制台。在 Windows 命令行中,字符被分解为无意义的字形。有没有一种简单的方法可以避免这种情况?我正在使用 use utf8;
。
提前致谢。
最佳答案
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
关于windows - Windows 上的 Perl : Problems with Encoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224400/