2017-02-23 5 views
0

私が扱っているHTMLファイルは一般にutf-8ですが、いくつかの壊れたエンコーディングがあり、Unicodeに変換できません。私の考えは、バイナリとしてそれらを解析し、最初のステップで、すべての適切なutf-8エンコーディングをhtmlコードで置き換えることです。バイナリファイルのutf-8コードをpythonのhtmlコードに変換する方法3

e.g. "\xc2\xa3" to £ 

2番目の手順では、壊れたエンコードを適切なものに置き換えます。

私は最初のステップで立ち往生しました。単一の文字を置換すると、次のように置換されます。

テーブルからのコードマッピングの取得は機能しません。テーブルを読むとき、utf-8コードはエスケープされます(b '\ xc3 \ x84')。二重スラッシュを取り除く方法が見つかりません。

私はこの問題を解決するいくつかの汚い方法を考えることができますしかし、それをきれいなものがなければならないべきか?

+0

どのようにエンコードが壊れていますか? FWIWの方が逆方向に進む傾向があります。「" & < >」とおそらくは「 」という名前のエンティティのみを使用し、それ以外の場合はUTF-8を使用します。あなたが本当に古代の&/または壊れたソフトウェアをサポートする必要がない限り... –

+0

例えば、私は適切なutf-8コードをすべて置き換える前に、 '„'であると思われる '\ x84'を取得しますが、置換(b '\ x84'、b '„') '\ xc3 \ x84'(ak 'Ä')のように\ x84の一部です。だから私は、私が置き換えを行う前にutf-8コードを "保護"しなければならないと思います。 – Laxas

答えて

0

最善の方法は、いずれかのプレフィルタ、彼らにある

iconv -t utf8 -c SRCFILE > NEWFILE 

やPythonで

with open("somefile_with_bad_utf8.txt","rt",encoding="utf-8",errors="ignore") as myfile: 
for line in myfile: 
    process() 

私はいつも言ってUTF-のためのpython3を使用するつもりでした8しかし、私はあなたがいると思う既に。

希望のこと....

+0

どちらの解決策も悪いエンコードを排除しています。しかし、私はそれらを正しい文字で置き換える必要があります。 – Laxas

関連する問題