我正在閱讀一個文本文件,我猜是用UTF-8編碼的。儘管如此,一些行只能被解碼爲拉丁-1。我會說這是非常糟糕的做法,但我必須應付它。使用多種編碼的文件
我有以下問題:
第一:我怎麼能「猜測」文件的編碼?我曾嘗試enca
,但在我的機器:
enca --list languages
belarussian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U
bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
croatian: CP1250 ISO-8859-2 IBM852 macce CORK
hungarian: ISO-8859-2 CP1250 IBM852 macce CORK
lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
slovene: ISO-8859-2 CP1250 IBM852 macce CORK
ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
chinese: GBK BIG5 HZ
none:
這是不夠的,檢測Latin-1的。順便說一下:如何增加enca
的可用語言列表?
第二:是否有可能使用不同的編碼部分編碼文件?我認爲,從技術角度來看,這是非常可能的:僅僅爲文件的不同部分使用不同的編解碼器。你見過這個嗎?你將如何處理閱讀這樣的文件?你會嘗試用不同的編碼解碼每一行嗎?你會怎麼做呢?我實際上使用python,並且將會理解處理多重編碼的一個例子。
第三:你通常如何處理你不知道他們正在使用的編碼的文件?我經常在從不同來源下載文本文件時遇到此問題。它們通常是從電子表格導出的CSV文件(我猜是excel),但根據導出參數,它們使用一種編碼或另一種編碼,而沒有提示選擇哪一種,所以我不得不猜測。
你如何確定二進制緩衝區的編碼? – dangonfast 2012-03-27 09:49:26
啓發式,猜測和統計分析。通常你會使用一個庫或一個幫手程序。因此第一個問題是:你使用的是什麼技術? – Joni 2012-03-27 14:58:03
我正在使用python,但發現文件中使用的編碼的任何*方法都會執行。 – dangonfast 2012-03-28 07:56:14