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

时间:2017-11-16 21:35:36

标签: perl 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)支持不将文件拖入内存。

使用该方法有什么缺点吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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