Perl Unicode 美食大全:将标准文件句柄解码为区域编码

℞ 16: 声明 STD{IN,OUT,ERR} 使用区域编码

始终在程序的边缘进行转换到和从所需编码。这包括标准文件句柄 STDINSTDOUTSTDERR。虽然现代操作系统在文件句柄设置中支持 UTF-8 是最常见的情况,但您可能需要使用其他编码。

Perl 可以尊重您当前的区域设置以用于其默认文件句柄。首先,从 CPAN 安装 Encode::Locale 模块。

    # cpan -i Encode::Locale
    use Encode;
    use Encode::Locale;

    # or as a stream for binmode or open
    binmode STDIN,  ":encoding(console_in)"  if -t STDIN;
    binmode STDOUT, ":encoding(console_out)" if -t STDOUT;
    binmode STDERR, ":encoding(console_out)" if -t STDERR;

Encode::Locale 模块允许您使用“终端期望的任何编码”为终端的输入和输出文件句柄。它还允许您指定“文件系统用于文件名的任何编码”;请参阅文档以获取更多信息。

上一部分:℞ 15: 将标准文件句柄解码为 UTF-8

系列索引:标准前言

下一部分:℞ 17: 将文件 I/O 默认设置为 UTF-8

标签

反馈

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