我希望在以下 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 或什么都不是。
