Python urllib2读取错误

Python urllib2读取错误,python,python-2.7,urllib2,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”编解码器无法解码4030位置的字节0xc2:

我正试图编写一个简单的程序,使用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”编解码器无法解码4030位置的字节0xc2:序号不在范围(128)
,我认为这是因为e.read()假设内容的ascii字符集,而返回的页面可能有其他内容


我的问题是如何解决这个问题?i、 我想有一个“合理的”信息信息倾销。我同意这也取决于我试图连接到的URL返回的字符集和编码,但如果我的Python e.read方法中有任何方法不尝试确保ASCII字符,只需使用encode即可,这只是编码问题

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

如果
self.log
是对标准日志对象的引用,则不应执行字符串插值,而应将插值作为参数传递:
log.debug('blah%s是%s',e.url,e.read())
。这有帮助吗?它不是标准的日志对象。如果我只是想打印呢?对不起,我看不出这有什么帮助?因为你对这个问题的诊断是错误的
e.read()
对字符没有任何假设,也不在乎。问题在于字符串插值。