Perl Unicode 美食馆:使所有 I/O 默认使用 UTF-8

℞ 18: 使所有 I/O 和 args 默认使用 utf8

Perl 中 Unicode 处理的核心规则是“始终在程序的边缘进行编码和解码”。

如果您已配置所有传入和传出数据都使用 UTF-8 编码,则可以令 Perl 为您执行适当的编码和解码。如perldoc perlrun 文档所述,有 -C 标志和 PERL_UNICODE 环境变量可用。使用 S 选项使标准输入、输出和错误文件句柄使用 UTF-8 编码。使用 D 选项使所有其他文件句柄使用 UTF-8 编码。使用 A 选项将 @ARGV 元素解码为 UTF-8

     $ perl -CSDA ...
# or
     $ export PERL_UNICODE=SDA

在您的程序中,您可以使用 open 前置声明在文件句柄上设置默认编码,并使用 Encode 模块解码 @ARGV 的元素

     use open qw(:std :utf8);
     use Encode qw(decode_utf8);
     @ARGV = map { decode_utf8($_, 1) } @ARGV;

上一页: ℞ 17: 使文件 I/O 默认使用 UTF-8

系列索引: 标准序言

下一页: ℞ 19: 指定文件的编码

标签

反馈

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