Perl Unicode 羹煮书:使文件I/O默认为UTF-8

℞ 17: 使文件I/O默认为utf8

如果你不幸遇到过Unicode警告“打印中的宽字符”,你可能意识到程序中某个地方的文件句柄没有设置适当的Unicode编码。请记住,Perl处理Unicode的规则是“始终在程序边缘进行编码和解码”。

你可以轻松地将STDIN、STDOUT和STDERR解码为UTF-8作为默认按本地设置解码STDIN、STDOUT和STDERR作为默认,或者使用binmode在特定的文件句柄上设置编码。

或者,您可以通过整个程序或基于词法设置所有文件句柄的默认编码。如perldoc perlrun中所述,-C标志和PERL_UNICODE环境变量可用。使用D选项使所有文件句柄默认为UTF-8编码。也就是说,未指定编码参数打开的文件将在UTF-8中

     $ perl -CD ...
     # or
     $ export PERL_UNICODE=D

open语法定义了其词法作用域内所有文件句柄操作的默认编码

     use open qw(:utf8);

请注意,当前open语法定义与autodie语法定义不兼容。

上一节: ℞ 16: 将标准文件句柄解码为本地编码

系列索引: 标准序言

下一节: ℞ 18: 使所有I/O默认为UTF-8

标签

反馈

这篇文章有什么问题吗?请通过在GitHub上打开问题或拉取请求来帮助我们。