洛基的城堡

Python学习手记

Python使用requests时的编码问题

一个简单的方法是在开头写上:

import sys

reload(sys)

sys.setdefaultencoding("utf-8")


另外第二种办法是:


    当你收到一个响应时,Requests会猜测响应的编码方式,用于在你调用 Response.text 方法时 对响应进行解码。Requests首先在HTTP头部检测是否存在指定的编码方式,如果不存在,则会使用 charade 来尝试猜测编码方式。

只有当HTTP头部不存在明确指定的字符集,并且 Content-Type 头部字段包含 text 值之时, Requests才不去猜测编码方式。

在这种情况下, RFC 2616 指定默认字符集 必须是 ISO-8859-1 。Requests遵从这一规范。如果你需要一种不同的编码方式,你可以手动设置 Response.encoding 属性,或使用原始的 Response.content 。


显示编码:

r = requests.get(url)

print r.encoding

#结果:ISO-8859-1



结果出现乱码,解决办法就是手动指定编码方式,调用requests.text时它就会按照指定的编码方式去解码。


r = requests.get(url)

r.encoding='gbk'

print r.headers['content-type']

data = r.text

print data


评论

© 洛基的城堡 | Powered by LOFTER