我有一个关于Perl脚本的问题。在类Unix系统中,它可以正确地将所有Unicode字符如ä打印到控制台。但在Windows命令行中,这些字符会变成无意义的图形。有没有简单的方法可以避免这种情况?我正在使用use utf8;。
提前感谢您的帮助。
提前感谢您的帮助。
use utf8;
简单地告诉Perl你的源码是使用UTF-8编码的。
在Unix系统上也不起作用。有一些字符串无法正确打印(print chr(0xE9);
),大多数可以打印出来但会出现“Wide character”警告(print chr(0x2660);
)。你需要解码输入并编码输出。
在Unix系统中,通常这样做:
use open ':std', ':encoding(UTF-8)';
chcp
命令来查找控制台的字符页码。(对我来说是437。)use open ':std', ':encoding(cp437)'; # Encoding used by console
use open IO => ':encoding(cp1252)'; # Encoding used by files
C:/strawberry/perl/lib/encoding.pm
第120行:哈希赋值中元素数量为奇数。C:\Users\Peter\perl\foo.pl
第9行:编码:未知编码“:std”(对于:encoding...
和IO => ..
同样适用)。最终我解决了这个问题,方法是将cmd.exe字体更改为Lucida控制台,chcp 1252,然后在脚本内使用use encoding 'cp1252';
。 - TLP
utf8
。 - gaussblurinc