2017-02-23 54 views
0

我正在處理的HTML文件通常是utf-8,但有一些破損的編碼,因此無法轉換爲Unicode。我的想法是將它們解析爲二進制文件,並在第一步中用html代碼替換所有正確的utf-8編碼。如何將二進制文件中的utf-8代碼轉換爲python中的html代碼3

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

在第二步,我會用適當的編碼替換破損的編碼。

我被困在第一步。替換單個字符可替換:

string.replace(b'\xc3\x84', b'Ä') 

從表中取代碼映射不起作用。在閱讀表格時,utf-8代碼會被轉義(b'\ xc3 \ x84'),我無法找到擺脫雙斜槓的方法。但應該有一個乾淨的,應該把它?

+0

什麼樣的方式是編碼被破壞? FWIW,我更傾向於走相反的方向:只使用命名實體'" & < >'也許' ',並使用UTF-8的一切。除非你需要支持真正的古老和/或破碎的軟件...... –

+0

E.g.我得到'\ x84',它應該是'„',但是如果我在替換所有正確的utf-8代碼之前替換(b'\ x84',b'„'),我正在銷燬正確的utf-8代碼像'\ 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() 

我要說總是使用python3爲UTF- 8但我看到你是已經。

希望可以幫到....

+0

這兩個解決方案都消除了不好的編碼。不過,我仍然需要他們用正確的字符替換它們。 – Laxas

相關問題