我正在尝试以下一个衬垫将文件从shiftjis编码转换为utf-8并且它无法正常工作。有没有可用的聪明人?
perl -i.bak -e 'use utf8; use Encode qw(decode encode); my $ustr = Encode::decode("shiftjis",$_); my $val = Encode::encode("utf-8",$ustr); print "$val";' filename
我对代码页很陌生,网络似乎充满了关于这个主题的各种复杂性。我只想要一个班轮。输入文件和输出文件看起来是一样的。
答案 0 :(得分:2)
您忘记了-n
开关,它会迭代每一行输入,一次加载一行到$_
并执行-e
参数中提供的代码。
更简洁地说,您可以编写类似
的程序perl -MEncode -pi.bak -e '$_=encode("utf-8",decode("shiftjis",$_))' filename
答案 1 :(得分:2)
Perl是一个奇怪的选择,因为已经有一个标准的实用程序:
iconv -f shift-jis -t utf-8 filename
当然,这并不容易让你就地编辑文件,但也有recode
同样以某种方式安装在我的系统上:)...
recode shift-jis..utf-8 filename
或使用moreutils:
iconv -f shift-jis -t utf-8 filename | sponge filename
嗯。好像TMTOWTDI。