使用 "Encode::from_to" 或 "PerlIO::encoding" 重新编码文件



Encode::from_toPerlIO::encoding之间,在perl脚本中重新编码文件的首选方法是什么?

这使用PerlIO::encoding

use warnings FATAL => 'utf8';
open(my $f1, "<:encoding(iso-8859-1)", "infile");
open(my $f2, ">:encoding(utf-8)", "outfile");
print $f2 $_ while <$f1>;

或者,我应该使用Encode::from_to还是有更好的方法?

似乎第一个选项,带有 PerlIO::encoding ,将支持不将文件放入内存中。

使用这种方法有什么缺点吗?

你没有展示你打算用Encode做什么,但普遍接受的最佳实践是使用 Perl 的内部编码(基本上是 UTF-8,但你不需要知道(并相应地将转换应用于输入和输出文件句柄

我不明白你从哪里得到使用 PerlIO 层会影响文件浏览的想法。也许你对行尾感到困惑,但即便如此,应该没有什么区别

如果您认为必须将整个文件读入内存,那么您应该再考虑一下。几乎总是最好将状态变量保留在单行之间,或者修改 Perl 的输入记录分隔符$/读取多行记录

除非您滥用文件数据,否则不会影响文件数据的解码或编码

最新更新