我在python 3.2中使用chardet 2.01,这个站点的souce代码http://getpython3.com/diveintopython3/case-study-porting-chardet-to-python-3.html
可以在这里下载
http://jaist.dl.sourceforge.net/project/cygwin-ports/release-2/Python/python3-chardet/python3-chardet-2.0.1-2.tar.bz2
我使用lxml2解析html来获取一些字符串
,并使用下面的代码检测编码

chardet.detect(name)

但是发生了一个错误
Traceback (most recent call last):
  File "C:\python\test.py", line 125, in <module>
    print(chardet.detect(str(name)))
  File "E:\Python32\lib\site-packages\chardet\__init__.py", line 24, in detect
    u.feed(aBuf)
  File "E:\Python32\lib\site-packages\chardet\universaldetector.py", line 98, in feed
    if self._highBitDetector.search(aBuf):
TypeError: can't use a bytes pattern on a string-like object

name是字符串对象
将字符串转换为字节意味着使用“utf-8”、“big5”等编码对其进行编码,charset将检测您所做的编码……而不是原始字符串的编码
我不知道这个问题。。。

最佳答案

问题很明显,您是在字符串而不是字节对象上调用chardet。您缺少的是Python已经解码了一个字符串。它不再有编码了。
您必须修复代码,以便在将原始字节解码为字符串之前将其赋给chardet。如果您从另一个包中获取字符串,则它已经确定了编码,您无能为力。

10-08 00:23