我在开始加了以下的代码
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但是用
print requests.Session().get(url, data=data).text
结果中输出了长这个样子的乱码
°æȨËùÓÐ 2013 ¶«ÄÏ´óѧÍøÂçÓëÐÅÏ¢ÖÐÐÄ
然后试着查看了一下上面文本的格式
print type(requests.Session().get(url, data=data).text)
输出的结果就是unicode,后来我又看了页面的head头中写了页面编码是gb2312,我后面又把代码改成了
print requests.Session().get(url, data=data).text.encode('gb2312')
结果就出现了下面的异常
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 227-228: illegal multibyte sequence1
把代码改成
print requests.Session().get(url, data=data).text.encode('gb2312', 'ignore')
依然是乱码
真的是没辙了,希望各位大大指点一下
首先,
sys.setdefaultencoding
is evil。其次,不会用 Requests 就去看文档,不要乱来。
如果 Requests 检测不到正确的编码,那么你告诉它正确的是什么:
原始内容在
response.content
里,bytes
,自己想怎么处理就怎么处理。Session
。直接requests.get(xxx)
就可以了。最后,弄不明白怎么处理编码错误的字符串就仔细想想,或者用 Python 3.x,不要散弹枪编程。
以下是 Python 3。Python 2 在那个字符串前加个
u
告诉它是unicode
也一样。