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: 显式编码/解码
系列索引: 标准前言
标签
反馈
这篇文章有问题?请在 GitHub 上打开问题或拉取请求以帮助我们




 
              