2012-01-02 62 views
0

我有CSV格式的數據,這個數據經過了嚴格的編碼處理,可能會在不同的軟件應用程序(LibreOffice Calc,Microsoft,Excel,Google Refine,自定義PHP/MySQL軟件;來自世界各地的Windows XP,Windows 7和GNU/Linux機器......)。它似乎在這個過程中的某個地方,非ASCII字符已經變得嚴重混亂,我不知道如何對它們進行解擾或檢測模式。這樣做手動將涉及幾千條記錄...如何解碼亂碼字符編碼:èas xc3 x83 xc2 x85 xc3 x82 xc2 xa0

這裏是一個例子。對於「三河」,當我打開Python中的CSV文件中的這一部分,它說:

Trois-Rivi\xc3\x83\xc2\x85\xc3\x82\xc2\xa0res 

問:通過什麼過程我可以扭轉

\xc3\x83\xc2\x85\xc3\x82\xc2\xa0 

找回

è 

即如何解讀此問題?這首先會如何變得混亂?我怎樣才能逆向工程這個bug?

+1

它看起來像utf8超過ISO的UTF8 ...也許你應該嘗試'iconv'? – fge 2012-01-02 22:47:43

+1

我懷疑'\ xc3 \ x83 \ xc2 \ x85 \ xc3 \ x82 \ xc2 \ xa0'會轉換成單個'è'。 – Oded 2012-01-02 22:47:54

+0

'echo -e'Trois-Rivi \ xc3 \ x83 \ xc2 \ x85 \ xc3 \ x82 \ xc2 \ xa0res'|文件-':/ dev/stdin:UTF-8 Unicode文本,帶有LF,NEL行結束符 – sehe 2012-01-02 23:04:05

回答

1

您可以檢查中提出的解決方案:Double-decoding unicode in python

另一個更簡單的蠻力解決方案是使用的輸入文件的正則表達式(((\\\x[a-c0-9]{2}){8}))搜索小集亂碼之間創建一個映射表。對於單一來源的文件,法語應少於32,德語少於10。然後,您可以使用這個小映射表運行「查找並替換」。

相關問題