【问题标题】:Perl one liner to convert from shiftjis to utf8Perl 一个班轮从 shiftjis 转换为 utf8
【发布时间】:2013-11-04 23:15:07
【问题描述】:

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

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

【问题讨论】:

  • “不工作”是什么意思?有了 6.3K 代表,您应该知道将其包含在您的帖子中。
  • 输入文件和输出文件是一样的
  • 我发誓这会对某人有所帮助。

标签: perl utf-8 shift-jis


【解决方案1】:

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

更简洁,你可以写你的程序像

perl -MEncode -pi.bak -e '$_=encode("utf-8",decode("shiftjis",$_))' filename

【讨论】:

  • 感谢您漫长的一天!
  • perl -MEncode=from_to -i.bak -pe'from_to $_, "shiftjis", "utf-8"' filename
【解决方案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。

【讨论】:

  • 有时比 iconv 好:p3rl.org/piconv(Perl 自带)piconv -f shift-jis -t utf-8 filename
  • @daxim wow,我最近也刚刚了解到psed。 perl 显然附带了一个完整的 unix 基础系统!
猜你喜欢
  • 2016-01-14
  • 2016-01-12
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
相关资源
最近更新 更多