首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python urllib2 utf-8编码

python urllib2 utf-8编码
EN

Stack Overflow用户
提问于 2011-11-12 07:06:43
回答 2查看 10.9K关注 0票数 1

好的,在我的python文件中有:# -*- coding: utf-8 -*-

代码片段:

代码语言:javascript
复制
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())

代码语言:javascript
复制
Content-Type: text/html; charset=UTF-8

但是我得到了一个错误:

代码语言:javascript
复制
UnicodeDecodeError: 'utf8' codec can't decode byte[...]: invalid continuation byte

这是怎么回事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-12 07:22:13

试着使用'latin-1‘解码数据,看看它是什么样子。您看到的内容表明UTF-8解码错误(请参阅UnicodeDecodeError, invalid continuation byte )。

如果您发布list(f.read())[:100]的结果,以便我们可以看到数据,这将是很有帮助的。

仅供参考,放置# -*- coding: utf-8 -*-与您的问题无关。该编码指的是python脚本本身的编码,而不是它正在处理的数据:-)

票数 3
EN

Stack Overflow用户

发布于 2011-11-12 07:16:12

这个特定的错误通常是由于试图使用utf-8解码而导致的,而字符串实际上是用latin1编码的。有关详细信息,请参阅UnicodeDecodeError, invalid continuation byte

我怀疑,尽管有标头,服务器并没有返回utf8编码的内容。

一种可能值得追求的解决方案是使用chardet来“猜测”使用了哪种编码。尽管chardet令人敬畏,但还是把它当作最后的手段吧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8101036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档