Skip to main content
 首页 » 编程设计

python之response.info().getencoding() 的实现在 urllib2 中被破坏了吗

2025年05月04日7zfyouxi

我希望在以下 python session 中 getencoding 的输出是“ISO-8859-1”:

>>> import urllib2 
>>> response = urllib2.urlopen("http://www.google.com/") 
>>> response.info().plist 
['charset=ISO-8859-1'] 
>>> response.info().getencoding() 
'7bit' 

这是 python 版本 2.6('2.6 (r26:66714, Aug 17 2009, 16:01:07)\n[GCC 4.0.1 (Apple Inc. build 5484)]')。

请您参考如下方法:

好吧,你认为什么东西坏了?

我获得了 urllib 和 wget 的 ISO-8859-2(我目前在波兰)。我用 Firefox 获得了 UTF-8。这是因为我的 Firefox 告诉站点它接受 ISO-8859-1 和 UTF-8,而 wget 和 urllib2 什么也没说。相关的请求头是:

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 

从中删除 UTF-8,您将不会获得 UTF-8,可通过 telnet 到端口 80 轻松测试。

Google.com 简单地(并且合理地)默认为 ISO-8859-1,google.pl 为 ISO-8859-2,我相信其他站点还有其他默认值。

我没有得到 wget、urllib2 或 telnet 的编码 header ,我猜 urllib2 然后假定为 7 位,这可能有点不合理,因为内容编码通常是 gzip 或什么都不是。