我在开始加了以下的代码
# -*- coding: utf-8 -*-import sysreload(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')
依然是乱码
真的是没辙了,希望各位大大指点一下
=============================================================================================
首先,。
其次,不会用 Requests 就去看文档,不要乱来。
如果 Requests 检测不到正确的编码,那么你告诉它正确的是什么:
response.encoding = 'gbk'print response.text
原始内容在
response.content
里,bytes
,自己想怎么处理就怎么处理。单个请求完全没必要用
Session
。直接requests.get(xxx)
就可以了。
最后,弄不明白怎么处理编码错误的字符串就仔细想想,或者用 Python 3.x,不要。
以下是 Python 3。Python 2 在那个字符串前加个 u
告诉它是 unicode
也一样。
>>> '°æȨËùÓÐ 2013 ¶«ÄÏ´óѧÍøÂçÓëÐÅÏ¢ÖÐÐÄ'.encode('latin1').decode('gbk')'版权所有 2013 东南大学网络与信息中心'
==============================================================================================
首先有一个问题,就是你用requests.Session().get(url,data=data)的方法获得的应该是bytes,你可以用type 看一下,既然是bytes的话,那么这个bytes是你所看到的gb2312编码之后的bytes,所以这里你应该用的是decode解码,而不是 encode编码。因为网页是gb2312编码的啊。所以试试decode,而不是encode。另外如果你想把得到的字符串存储到文件里面,那么还要注 意文件的编码,因为windows默认是gbk编码,你在open的时候要指定文件编码。
另外你还可以参考这个问题。=================================================================================================
首先先看下网站的charset是什么编码,比如是'utf-8'的,在open url的时候先encoding='utf-8',然后在print的时候,decode('utf-8'),或者跟楼上说的用python 3.0以上的版本对编码的问题简化了很多
=====================================================================================