print (response.encoding)
输出结果是 ISO-8859-1
使用的方法是
print response.text.encode('ISO-8859-1').decode(requests.utils.get_encodings_from_content(response.text)[0])iso-8859是什么? 他又被叫做Latin-1或“西欧语言” . 对于我来说,这属于requests的一个bug,在requests库的github里可以看到不只是中国人提交了这个issue. 但官方的回复说是按照http rfc设计的。下面通过查看requests源代码,看这问题是如何造成的 !requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题.