4

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

提前致谢。

4

1 回答 1

13

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
于 2013-03-05T13:16:00.303 回答