我在开始加了以下的代码
# -*- 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')
依然是乱码
真的是没辙了,希望各位大大指点一下
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,
sys.setdefaultencodingis evil。其次,不会用 Requests 就去看文档,不要乱来。
如果 Requests 检测不到正确的编码,那么你告诉它正确的是什么:
原始内容在
response.content里,bytes,自己想怎么处理就怎么处理。Session。直接requests.get(xxx)就可以了。最后,弄不明白怎么处理编码错误的字符串就仔细想想,或者用 Python 3.x,不要散弹枪编程。
以下是 Python 3。Python 2 在那个字符串前加个
u告诉它是unicode也一样。首先先看下网站的charset是什么编码,比如是'utf-8'的,在open url的时候先encoding='utf-8',然后在print的时候,decode('utf-8'),或者跟楼上说的用python 3.0以上的版本对编码的问题简化了很多