1

ISO-8859-1からUTF-8に変換する必要のあるドキュメントがいくつかあります(もちろんBOMなし)。しかし、これは問題です。私はこれらのドキュメントを非常に多く持っているので(実際にはドキュメントの組み合わせであり、UTF-8とISO-8859-1がいくつかあります)、それらを自動変換する方法が必要です。残念ながら、私はActivePerlをインストールしているだけで、その言語でのエンコーディングについてはよくわかりません。PHPをインストールできるかもしれませんが、これは私のパソコンではないのでわかりません。

ご存知のとおり、私はSciteまたはNotepad ++を使用していますが、どちらも正しく変換されません。たとえば、チェコ語で「ž」という文字を含むドキュメントを開き、Notepad ++の[UTF-8に変換]オプションに移動すると、誤って読み取り不可能な文字に変換されます。

それらを変換する方法はありますが、面倒です。特殊文字を使用してドキュメントを開き、そのドキュメントをWindowsクリップボードにコピーしてから、UTF-8ドキュメントに貼り付けて保存すると、問題ありません。これは、私が持っているドキュメントの量に対して(すべてのファイルを開き、新しいドキュメントにコピー/貼り付けする)面倒です。

何か案は?ありがとう!!!

4

3 に答える 3

5

文字 'ž' が含まれている場合、エンコーディングは ISO-8859-1 ("Latin 1") ではなく、おそらく CP1252 ("Win Latin 1") です。UTF8、ISO-8859-1、および CP1252 の混合 (おそらく同じファイル内であっても) を処理することは、まさにEncoding::FixLatin Perl モジュールが設計されていることです。

次のコマンドを実行して、CPAN からモジュールをインストールできます。

perl -MCPAN -e "install 'Encoding::FixLatin'"

その後、Encoding::FixLatin モジュールを使用する短い Perl スクリプトを作成できますが、さらに簡単な方法があります。fix_latinこのモジュールには、標準入力で混合エンコーディングを取り、標準出力で UTF8 を書き込むというコマンドが付属しています。したがって、次のようなコマンド ラインを使用して 1 つのファイルを変換できます。

fix_latin <input-file.txt >output-file.txt

Windows を実行している場合、fix_latin コマンドがパスにない可能性があり、pl2bat を介して実行されていない可能性があります。この場合、次のようなことを行う必要があります。

perl C:\perl\bin\fix_latin.pl <input-file.txt >output-file.txt

正確なパスとファイル名は、システムに合わせて調整する必要があります。

大量のファイル全体を実行するfix_latinのは Linux システムでは簡単ですが、Windows ではおそらく powershell などを使用する必要があります。

于 2010-04-18T02:20:55.567 に答える
1

これがあなたの特定の質問に対する有効な答えかどうかはわかりませんが、GNU iconv ツールを見ましたか? それはかなり一般的に利用可能です。

于 2010-04-17T00:17:40.330 に答える
1

cygwin にアクセスできる場合、またはいくつかの一般的な *nix ツールをダウンロードできる場合 (bash、grep、iconv、およびファイルが必要です。これらはすべて、たとえばgnuwin32を介して Windows で利用できます)、次のことができる可能性があります。仕事をするかなり単純なシェルスクリプトを書いてください。

スクリプトはおおよそ次のようになります。

for f in *;
do
   if file $f | grep 'ISO-8859' > /dev/null;
   then
      cat $f | iconv -f iso-8859-1 -t utf-8 > $f.converted;
   else
      echo "Not converting $f"
   fi;
done;

ただし、手順をテストする必要があります。たとえば、ISO-8859 ドキュメントの「ファイル」が正確に何を意味するのかわかりません。

于 2010-04-17T00:21:18.720 に答える