Perl を使用して、データベース AS/400 DB2 からテーブルをインポートしました。
問題は、文字列が EBCDIC Latin-1 (イタリア語) でエンコードされていることです。
結果のファイルをLinux bashでプレーンなutf-8に変換するにはどうすればよいですか?
皮切りに
iconv -f EBCDIC-IT -t utf-8 <filename>
次に、出力を確認し、正確に正しくない場合は、 にman iconv
リストされている使用可能なエンコーディングを確認しますiconv -l
。
(「EBCDIC Latin-1」はやや奇妙であることに注意してください。「Latin-1」は ISO-8859-1 を示しますが、「EBCDIC」はまったく別のものです。file <filename>
実際にどのエンコーディングを使用しているかについて、コンピューターで知識に基づいた推測を取得してみてください。見つめている。)
で簡単iconv
です。
iconv -f ISO8859-1 -t "UTF-8" result.csv -o new_result.csv
ISO8859-1 は、Latin-1 エンコード形式です。エンコーディングのリストについては、公式の IBM 文書から次の表を参照してください。
変換により、EBCDIC からの無効な UTF-8 文字が残る可能性があることに注意してください。例として、文字列内の NULL 文字があります。これを回避するには、HEX エディタを使用して、16 進数値を 00 から 20 (スペース文字) に置き換えます。