彻底解决 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xe5‘ in position 13

学习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.com/example.html
url = 'http://www.XXX.com/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.com/example.html
url = 'http://www.XXX.com/example.html'
page = requests.get(url)
page.encoding='utf-8'
data = BeautifulSoup(page.text, 'lxml')
print(data)


# 知识点:str转bytes叫encode,bytes转str叫decode

  • 45
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lj606

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值