我的文件/tmp/xxx
包含下一个内容:
00000000 D0 BA D0 B8 │ D1 80 D0 B8 │ D0 BB D0 B8 │ D0 BA к и р и л и к
当我阅读文件内容并打印时,我收到错误:
Wide character in print at ...
来源是:
use utf8;
open my $fh, '<:encoding(UTF-8)', '/tmp/xxx';
print scalar <$fh>
print的输出是:
кирилик
答案 0 :(得分:7)
您正在打印到STDOUT,它不会期待UTF8。 添加
binmode(STDOUT, "encoding(UTF-8)");
在已打开的句柄上更改它。
答案 1 :(得分:4)
use utf8
表示Perl希望您的源代码为UTF-8。
open
pragma可以更改标准文件句柄的编码:
use open qw(:std :utf8);