Perl Unicode 烹饪手册:指定文件的编码
℞ 19:以特定编码打开文件
虽然将默认的 Unicode 编码设置为 IO 是合理的,但有时默认编码并不正确。在这种情况下,可以在 open 函数的模式选项中手动指定文件句柄的编码,或者使用 binmode 操作符。Perl 的 IO 层将为您处理编码和解码。这是处理编码文本的正常方式,而不是通过调用低级函数。
指定用于输入的文件句柄的编码
open(my $in_file, "< :encoding(UTF-16)", "wintext");
# OR
open(my $in_file, "<", "wintext");
binmode($in_file, ":encoding(UTF-16)");
# ...
my $line = <$in_file>;
指定用于输出的文件句柄的编码
open($out_file, "> :encoding(cp1252)", "wintext");
# OR
open(my $out_file, ">", "wintext");
binmode($out_file, ":encoding(cp1252)");
# ...
print $out_file "some text\n";
这里可以指定的不仅仅是编码。例如,":raw :encoding(UTF-16LE) :crlf"
这一咒语包括隐式的 CRLF 处理。更多详情请参阅 PerlIO。
上一篇文章:℞ 18:使所有 I/O 默认为 UTF-8
系列索引:标准序言
下一篇文章:℞ 20:Unicode 大小写
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。