テキストファイルを対応する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モジュールを含む他のコンバータがあります。