Versions:
Linux 2.6; 4.1.2アイコン。
ISO変換はエラーを返しませんが、変換されたファイルはまだ次のように表示されます。US-ASCII。
質問foobar.txt
UTF-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
ユーティリティはファイル全体を表示せず、最初の部分のみを表示します。十分大きい場合は、file
ASCII 以外のバイトを無視できます。おそらく考えられるすべての考慮事項の「スタート」が573167
過ぎたでしょう。file
一方、変換のみiconv
使用できます。みんな知ってる文字セットは UTF-8 です。いくつかの可能なオプションを試して成功したかどうかを確認し、結果ファイルを比較することができます。
たとえば、ファイルがISO-8859-xのバージョンの1つである場合は、生成されたファイルを調べて成功を測定する必要があります。iconv
ファイルは573167バイト以降にのみ問題が発生するため、そのcut
文字オフセットから始まるファイル部分抽出を使用してfile
識別できます。