Eug*_*kov 2 unicode perl file-io
我有/tmp/xxx下一个内容的文件:
00000000 D0 BA D0 B8 ? D1 80 D0 B8 ? D0 BB D0 B8 ? D0 BA ? ? ? ? ? ? ?
Run Code Online (Sandbox Code Playgroud)
当我读取文件的内容并打印它时,我收到错误:
Wide character in print at ...
Run Code Online (Sandbox Code Playgroud)
来源是:
use utf8;
open my $fh, '<:encoding(UTF-8)', '/tmp/xxx';
print scalar <$fh>
Run Code Online (Sandbox Code Playgroud)
print的输出是:
???????
Run Code Online (Sandbox Code Playgroud)
你打印到STDOUT,这是不期望UTF8.加
binmode(STDOUT, "encoding(UTF-8)");
Run Code Online (Sandbox Code Playgroud)
在已打开的句柄上更改它.
这use utf8意味着Perl希望您的源代码为UTF-8。
该open编译可以更改标准文件句柄的编码:
use open qw(:std :utf8);
Run Code Online (Sandbox Code Playgroud)