Python urllib2错误读取

时间:2013-09-25 09:25:56

标签: python python-2.7 urllib2

我正在尝试编写一个使用urllib2进行错误处理的简单程序。代码如下所示

try:
    urllib2.Request(...)
except HTTPError as e:
    self.log.debug("HTTP Error for url %s is %s" % (e.url, e.read()))

重点是除了e.message之外还要完整地转储错误页面。但偶尔我会得到消息UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 4030: ordinal not in range(128)我认为是因为e.read()假设ascii char设置的内容,因为返回的页面可能还有别的东西。

我的问题是如何解决这个问题?即,我希望有一个“合理”信息性的消息倾倒。我同意这也取决于我尝试连接的URL返回的字符集和编码,但是如果我的Python e.read方法中有任何方法不尝试确保ASCII字符

1 个答案:

答案 0 :(得分:1)

只需使用编码就可以了,这只是编码的一个问题。

try:
    urllib2.Request(...)
except HTTPError as e:
    self.log.debug("HTTP Error for url %s is %s" % (e.url, e.read().encode('utf8')))