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上打开问题或拉取请求来帮助我们。