2

我希望以下 python 会话中的 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)]' 特别是)。

4

2 回答 2

0

好吧,你认为坏的是什么?

我获得了 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,可以通过远程登录到端口 80 轻松测试。

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

我没有得到 wget、urllib2 或 telnet 的编码头,我猜 urllib2 然后假定为 7bit,这可能有点不合情理,因为 Content-Encoding 通常是 gzip 或什么都没有。

于 2009-08-21T11:05:34.380 回答
0

根据文件

消息.getencoding()

返回Content-Transfer-Encoding消息头中指定的编码。如果不存在这样的标头,则返回“7bit”。编码转换为小写。

于 2013-06-17T14:40:27.690 回答