Skip to main content
 首页 » 编程设计

Python urllib2 读取错误

2025年05月04日14lonelyxmas

我正在尝试编写一个使用 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内容的字符集,因为返回的页面可能还有其他内容。

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

请您参考如下方法:

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

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