在Encode::from_to
和PerlIO::encoding
之间,在perl脚本中重新编码文件的首选方式是什么?
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
)支持不将文件拖入内存。
使用该方法有什么缺点吗?
答案 0 :(得分:0)
你没有展示你打算用Encode
做什么,但普遍接受的最佳做法是使用Perl的内部编码(基本上是UTF-8,但你不需要知道)和将转换应用于相应的输入和输出文件句柄
我不明白你在哪里想到使用PerlIO层会影响文件的淤塞。也许你会对行结尾感到困惑,但即便如此,也应该没什么区别
如果您认为必须将整个文件读入内存,那么您应该再考虑一下。几乎总是最好将状态变量保持在单行上,或者修改Perl的输入记录分隔符$/
以读取多行记录
除非您误用文件数据否则不会影响文件数据的解码或编码