0

ファイルをshiftjisエンコーディングからutf-8に変換するために次の1つのライナーを試していますが、機能していません。役に立つ賢い人はいますか?

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 

私はコードページにかなり慣れていませんが、Web にはこのテーマに関するあらゆる種類の複雑さが蔓延しているようです。ワンライナーが欲しいだけです。入力ファイルと出力ファイルは同じように見えます。

4

2 に答える 2

2

-n入力の各行を反復処理し、引数で指定$_されたコードを一度に 1 行ずつ読み込んで実行するスイッチを忘れました。-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

または、moreutils を使用します。

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

うーん。TMTOWTDIのようです。

于 2013-11-05T00:06:48.417 に答える