admin管理员组文章数量:1611201
学习python数据分析课程时,遇到的问题,打印个数据,总是报错:
UnicodeEncodeError: 'gbk' codec can't encode character '\xe5' in position 167: illegal multibyte sequence
代码如下:
import io
import sys
from bs4 import BeautifulSoup
import requests
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
# 例子 http://www.XXX/example.html
url = 'http://www.XXX/example.html'
page = requests.get(url)
data = BeautifulSoup(page.text, 'lxml')
print(data)
# 知识点:str转bytes叫encode,bytes转str叫decode
1. 打开网站源码,查看编码方式。结果是:charset="utf-8"。尝试写:
print(data.decode('utf-8'))
结果还是 报上面那个错。
2. 立刻去网上查,说是改变标准输出的默认编码,于是加入了一句:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
结果:运行成功,没有报错,但是打印的数据是乱码
于是 print(data.decode('utf-8')),试了所有编码,打印结果居然是繁体字。
编码名称 用途 utf8 所有语言 gbk 简体中文 gb2312 简体中文 gb18030 简体中文 big5 繁体中文 big5hkscs 繁体中文
3. 于是试了另一种方法,才彻底解决问题,注释2中加入的代码,设置pycharm的编码,如下图
结果:运行成功,不报错,但是还是乱码。
加入代码:
page.encoding='utf-8'
结果:运行成功,显示的简体中文。搞定!!!
最后代码:
import io
import sys
from bs4 import BeautifulSoup
import requests
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
# 例子 http://www.XXX/example.html
url = 'http://www.XXX/example.html'
page = requests.get(url)
page.encoding='utf-8'
data = BeautifulSoup(page.text, 'lxml')
print(data)
# 知识点:str转bytes叫encode,bytes转str叫decode
本文标签: 彻底解决gbkCodecencodeUnicodeEncodeError
版权声明:本文标题:彻底解决 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘xe5‘ in position 13 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728604522a1165283.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论