2010-02-21 29 views
4

這與我的問題here有某種關係。Python中的編碼檢測庫

我通過HTTP處理大量文本(主要是HTML和XML)。我正在尋找一個python庫,可以根據不同的策略進行智能編碼檢測,並使用最好的字符編碼猜測將文本轉換爲unicode。

我發現chardet可以很好地進行自動檢測。但是,自動檢測一切都是問題,因爲它很慢並且非常違反所有標準。按照chardetFAQ我不想擰這些標準。

從這裏同FAQ是的,我想看看編碼的地方名單:在HTTP Content-type

  • charset參數。
  • <meta http-equiv="content-type">元素 <head>的網頁爲HTML 文件。
  • 編碼屬性XML XML prolog for XML 文檔。
  • 自動檢測字符編碼作爲最後的手段。

基本上我希望能夠看到所有這些地方,並自動處理衝突信息。

有沒有這樣的圖書館,或者我需要自己寫嗎?

回答

3

BeautifulSoup(html解析器)合併了一個名爲UnicodeDammit的類,它就是這樣做的。看一看,看看你是否喜歡它。

+0

它看起來很有希望。謝謝! – parxier 2010-02-21 23:06:44

10

BeautifulSoupUnicodeDammit,其依次使用chardet

chardet本身對於一般情況(確定文本的編碼)非常有用,但是如您所說慢。 UnicodeDammitchardet之上添加了額外的功能,尤其是它可以查找在XML的編碼標籤中明確指定的編碼。

對於HTTP Content-type頭,我認爲你需要閱讀自己提取charset參數,然後在fromEncoding參數傳遞給UnicodeDammit

至於解決衝突,UnicodeDammit將優先於明確說明的編碼(如果編碼不產生錯誤)。有關完整的詳細信息,請參閱文檔。

+0

[cchardet](https://pypi.python.org/pypi/cchardet/)(https://github.com/PyYoshi/cChardet)是'chardet'更快的本地代碼dropin替換。 – ccpizza 2015-11-27 18:32:23