0

我正在尝试使用以下方法将文件从 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 

我对代码页面很陌生,网络似乎充斥着关于这个主题的各种复杂性。我只想要一个班轮。输入文件和输出文件看起来是一样的。

4

2 回答 2

2

您忘记了-n开关,它将遍历输入的每一行,一次加载一行$_并执行-e参数中提供的代码。

更简洁地说,您可以编写您的程序,例如

perl -MEncode -pi.bak -e '$_=encode("utf-8",decode("shiftjis",$_))' filename
于 2013-11-04T23:44:40.637 回答
2

Perl 是一个奇怪的选择,因为已经有一个标准的实用程序可以做到这一点:

iconv -f shift-jis -t utf-8 filename

当然,这并不容易让您就地编辑文件,但是还有recode一个同样安装在我的系统上的文件:)...

recode shift-jis..utf-8 filename

或者使用更多实用程序:

iconv -f shift-jis -t utf-8 filename | sponge filename

唔。好像是 TMTOWTDI。

于 2013-11-05T00:06:48.417 回答