好的,在我的python文件中有:# -*- coding: utf-8 -*-。
代码片段:
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.addheaders = [('Accept-Charset', 'utf-8')]
f =opener.open(url)
doc = f.read().decode('utf-8')服务器响应是:(通过f.info())
Content-Type: text/html; charset=UTF-8但是我得到了一个错误:
UnicodeDecodeError: 'utf8' codec can't decode byte[...]: invalid continuation byte这是怎么回事?
发布于 2011-11-12 07:22:13
试着使用'latin-1‘解码数据,看看它是什么样子。您看到的内容表明UTF-8解码错误(请参阅UnicodeDecodeError, invalid continuation byte )。
如果您发布list(f.read())[:100]的结果,以便我们可以看到数据,这将是很有帮助的。
仅供参考,放置# -*- coding: utf-8 -*-与您的问题无关。该编码指的是python脚本本身的编码,而不是它正在处理的数据:-)
发布于 2011-11-12 07:16:12
这个特定的错误通常是由于试图使用utf-8解码而导致的,而字符串实际上是用latin1编码的。有关详细信息,请参阅UnicodeDecodeError, invalid continuation byte。
我怀疑,尽管有标头,服务器并没有返回utf8编码的内容。
一种可能值得追求的解决方案是使用chardet来“猜测”使用了哪种编码。尽管chardet令人敬畏,但还是把它当作最后的手段吧。
https://stackoverflow.com/questions/8101036
复制相似问题