iconv 間違った入力順序 - なぜですか?

iconv 間違った入力順序 - なぜですか?

テキストファイルを対応するASCIIファイルに変換しようとすると、次のエラーが発生しますiconv: illegal input sequence at position

私が使用するコマンドはiconv -f UTF-8 -t ascii//TRANSLIT file

攻撃型キャラクターはですæ

テキストファイル自体が存在します。ここ

シーケンスが違法であるのはなぜですか?入力文字は正しいUTF-8文字(U + 00E6)です。

答え1

ファイルは UTF-8 ではなく ISO-8859-1 でエンコードされます。

$ hd 0606461.txt | grep -B1 '^0002c520'
0002c510  64 75 6d 20 66 65 72 69  65 6e 74 20 72 75 69 6e  |dum ferient ruin|
0002c520  e6 0d 0a 2d 2d 48 6f 72  61 63 65 2e 0d 0a 0d 0a  |...--Horace.....|

そして、バイト「e6」自体は有効なUTF-8シーケンスではありません。

したがってiconv -f latin1 -t ascii//TRANSLIT file

答え2

リンクしたファイルがUTF-8のようです。HTML文書内で

$ file 0606461.txt 
0606461.txt: HTML document, ASCII text, with CRLF line terminators

まず、HTMLをテキストに変換するコンバータを介して実行する場合、たとえば

iconv -f UTF-8 -t ascii//TRANSLIT < <(html2text 0606461.txt)

その後、問題があるように見えるUTF-8フラグメントはエラーなしで音訳されているようです。

Si fractus illabatur orbis.
Impavidum ferient ruinæ
--Horace.

~になる

Si fractus illabatur orbis.
Impavidum ferient ruinae
--Horace.

このhtml2textユーティリティはシステムにインストールされていない可能性があります。見つからないかインストールできない場合は、Pythonモジュールを含む他のコンバータがあります。

関連情報