【发布时间】:2018-06-05 01:23:04
【问题描述】:
我有文件/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>
打印的输出是:
кирилик
【问题讨论】:
-
你的
use utf8告诉 Perl 源代码文件中有 utf8 字符。你需要打开STDOUT支持 utf8 或binmode它。 -
@simbabque:这似乎与
use utf8无关:代码完全是ASCII。/tmp/xx的第一行很可能包含扩展字符。 -
我知道@Borodin。这就是我的观点。
-
@simbabque:啊。我把它读成问题是因为代码有
use utf8但STDOUT处于字节模式。 -
@simbabque:是的,我现在明白你的意思了