Perl Unicode 烹饪书:将 @ARGV 解码为 UTF-8

℞ 13: 将程序参数解码为 utf8

虽然标准 Perl Unicode 前言使得 Perl 的文件句柄默认使用 UTF-8 编码,但文件句柄并不是数据来源和输出的唯一方式。您的程序通过 @ARGV 提供的命令行参数也可能需要解码。

您可以通过两种方式让 Perl 自动处理此操作,也可以手动进行。如 perldoc perlrun 中所述,-C 标志控制 Unicode 功能。使用 A 修饰符使 Perl 将您的参数视为 UTF-8 字符串

     $ perl -CA ...

当然,您可以在程序的 shebang 行上使用 -C

第二种方法是使用 PERL_UNICODE 环境变量。它接受与 -C 标志相同的值;要获得与 -CA 相同的效果,写入

     $ export PERL_UNICODE=A

您可以使用 PERL_UNICODE=0 临时 禁用 此自动 Unicode 处理。

最后,您可以使用 Encode 模块手动解码 @ARGV 的内容

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

上一页: ℞ 12: 显式编码/解码

系列索引: 标准前言

下一页: ℞ 14: 将 @ARGV 解码为本地编码

标签

反馈

这篇文章有问题?请在 GitHub 上打开问题或拉取请求以帮助我们