Python 为什么在使用urllib2打开url时会出现混乱的字符?

Python 为什么在使用urllib2打开url时会出现混乱的字符?,python,urllib2,urllib,Python,Urllib2,Urllib,这是我的代码,你们也可以测试一下。我总是搞砸字符而不是页面来源 Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"} Req = urllib2.Request("http://rlslog.net", None, Header) Response = urll

这是我的代码,你们也可以测试一下。我总是搞砸字符而不是页面来源

Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"}

Req = urllib2.Request("http://rlslog.net", None, Header)

Response = urllib2.urlopen(Req)

Html = Response.read()

print Html[:1000]
正常情况下,
Html
应该是页面源代码,但最终它变成了一大堆乱七八糟的字符。有人知道为什么吗


顺便说一句:我使用的是Python2.7,您可以通过支持动态压缩的用户代理发出请求。您确定输出不是gzip压缩的吗?尝试通过运行和/或打印标题

您可以使用支持即时压缩的用户代理发出请求。您确定输出不是gzip压缩的吗?尝试通过运行和/或打印标题

,正如Bruce已经建议的那样,这似乎是压缩方面的问题。服务器返回gzip压缩内容,但不支持自动gzip压缩。事实上,据我所知,在这种情况下,服务器的行为是错误的:只有当存在
Accept encoding:gzip
头时,服务器才应该压缩内容(您可以自己提供,也可以由您的客户机自动添加,如果它支持的话)


所以:要么使用一个自动支持它的库,比如(我已经对相关页面进行了测试,它可以正常工作),要么自己解压(请参阅的答案了解如何操作,注意在问题中,服务器返回的头被检查,看内容是否是gzip压缩的)

,正如Bruce已经建议的那样,这似乎是压缩的问题。服务器返回gzip压缩内容,但不支持自动gzip压缩。事实上,据我所知,在这种情况下,服务器的行为是错误的:只有当存在
Accept encoding:gzip
头时,服务器才应该压缩内容(您可以自己提供,也可以由您的客户机自动添加,如果它支持的话)


所以:要么使用一个自动支持它的库,比如(我已经对相关页面进行了测试,它可以正常工作),要么自己解压(请参阅的答案了解如何操作,注意在问题中,检查服务器返回的标题,看内容是否是gzip压缩的)

对我来说很好,问题一定在别的地方。也许是你输出响应的方式中的一些简单错误?@kapep:你确定吗?我只是简单地“打印Html[:100]”,它们都是乱七八糟的。你使用的是什么python版本?这只是一个猜测,因为打印部分没有包括在内。这对我来说就像预期的那样。使用2.6.4.@kapep:现在,不知从哪里冒出来,一切都很好!相同的代码,没有改变。哦,老兄,我很困惑…@Shane:“没什么变化”:在你这边没有,但可能服务器端发生了一些变化。对我来说很好,问题一定在其他地方。也许是你输出响应的方式中的一些简单错误?@kapep:你确定吗?我只是简单地“打印Html[:100]”,它们都是乱七八糟的。你使用的是什么python版本?这只是一个猜测,因为打印部分没有包括在内。这对我来说就像预期的那样。使用2.6.4.@kapep:现在,不知从哪里冒出来,一切都很好!相同的代码,没有改变。哦,老兄,我很困惑…@Shane:“没什么变化”:在你这边没有,但可能服务器端发生了变化。