iconvを使用するとファイルがUTF-8に変換されないのはなぜですか? [コピー]

iconvを使用するとファイルがUTF-8に変換されないのはなぜですか? [コピー]

Versions: Linux 2.6; 4.1.2アイコン。

ISO変換はエラーを返しませんが、変換されたファイルはまだ次のように表示されます。US-ASCII

質問foobar.txtUTF-8にトランスコードする方法は?

$> file -bi foobar.txt
   text/plain; charset=us-ascii

$> iconv -f US-ASCII -t UTF-8 foobar.txt >  foobar_utf8.txt
iconv: illegal input sequence at position 573167

$>iconv -f ISO-8859-1 -t UTF-8 foobar.txt >  foobar_utf8.txt
$>
$> file foobar_utf8.txt
   foobar_utf8.txt: ASCII text

ベストアンサー1

ASCIIは常に正しいUTF-8なので、変換は不要です。以前はASCII。

このfileユーティリティはファイル全体を表示せず、最初の部分のみを表示します。十分大きい場合は、fileASCII 以外のバイトを無視できます。おそらく考えられるすべての考慮事項の「スタート」が573167過ぎたでしょう。file

一方、変換のみiconv使用できます。みんな知ってる文字セットは UTF-8 です。いくつかの可能なオプションを試して成功したかどうかを確認し、結果ファイルを比較することができます。

たとえば、ファイルがISO-8859-xのバージョンの1つである場合は、生成されたファイルを調べて成功を測定する必要があります。iconvファイルは573167バイト以降にのみ問題が発生するため、そのcut文字オフセットから始まるファイル部分抽出を使用してfile識別できます。

おすすめ記事