在python中编码检测库

时间:2010-02-21 22:55:54

标签: python html xml http character-encoding

这与我的问题here有某种关系。

我处理通过HTTP获取的大量文本(主要是HTML和XML)。我正在寻找一个python中的库,可以根据不同的策略进行智能编码检测,并使用最佳的字符编码猜测将文本转换为unicode。

我发现chardet非常有效地进行自动检测。然而,自动检测一切都是问题,因为它是缓慢的,并且非常违反所有标准。根据{{​​1}} FAQ,我不想搞砸标准。

在同一个常见问题解答中,这里是我想要查找编码的地方列表:

  • HTTP chardet标头中的charset参数。
  • Content-type元素 HTML网页的<meta http-equiv="content-type"> 文档。
  • XML prolog for XML中的编码属性 文档。
  • 自动检测字符编码作为最后的手段。

基本上我希望能够查看所有这些地方并自动处理相互冲突的信息。

那里有这样的图书馆,还是我需要自己编写?

2 个答案:

答案 0 :(得分:10)

BeautifulSoupUnicodeDammit,后者又使用了chardet

chardet本身对于一般情况(确定文本的编码)非常有用,但是如你所说的那样慢。 UnicodeDammitchardet之上添加了额外的功能,特别是它可以查找XML编码标记中明确指定的编码。

对于HTTP Content-type标头,我认为您需要自己阅读以提取charset参数,然后将其传递给UnicodeDammit参数中的fromEncoding

至于解决冲突,UnicodeDammit将优先显式声明编码(如果编码不产生错误)。有关详细信息,请参阅文档。

答案 1 :(得分:3)

BeautifulSoup(html解析器)包含一个名为UnicodeDammit的类,它就是这样做的。看看你是否喜欢它。