web-dev-qa-db-ja.com

複数のISO8859-1をUTF-8に変換する方法

いくつかのSQLファイルをISO8859-1からUTF-8に変換しようとしています

次のコマンドを実行しています:

iconv -f ISO_8859-1 -t UTF-8 *.sql

私が得るのは、非常に長い端末へのコンテンツの出力であり、出力を終了した後は変換されません。彼らは同じままです。出力を表示せずに変換できるようにしたいと思います。

6
Luis Alvarado

iconvは、デフォルトで出力をstdoutに送信します。これは、見たものの動作を説明します。 -oオプションを使用して出力をファイルに送信できますが、それは単一の出力ファイルを生成するだけであり、ファイルを所定の場所に更新することはおそらく役に立ちません。おそらく次のようなものを試してください:

for file in *.sql; do
    iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
done

これにより、各ファイルが変換され、結果が一時ファイルに保存され、変換が成功した場合は元のファイル名に移動されます。

7

このタスクにrsyncを使用することもできます。1つの利点は、バックアップを保持することです。変換されたファイルの1つが既にターゲットコード化にある場合、それを台無しにします。

rsync -va --iconv=iso88591,utf8 /source/latin1/ /destination/utf8/
1
SergioAraujo