在python中编码检测库

par*_*ier 5 html python xml http character-encoding

这与我的问题某种程度上相关.

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

我发现chardet非常适合自动检测.然而,自动检测一切都是问题,因为它是缓慢的,并且非常违反所有标准.根据chardet 常见问题,我不想搞砸标准.

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

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

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

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

Cra*_*een 10

BeautifulSoupUnicodeDammit,反过来使用chardet.

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

对于HTTP Content-type标头,我认为你需要阅读自己提取charset参数,然后将其传递给UnicodeDammitfromEncoding参数.

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


drx*_*zcl 3

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