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