python报错:UnicodeDecodeError: ‘gb2312‘ codec can‘t decode byte 0xa8 in position 351527: illegal multi

1、报错原因

UnicodeDecodeError: 'gb2312' codec can't decode byte 0xa8 in position 351527: illegal multi

原因:将内容通过gb2312的方式去解码,想要获得Unicode字符串,如果内容中含有部分特殊字符会导致解码不成功从而报错。

UnicodeDecodeError 表示在解码过程中遇到了无法按照指定编码方式解析的字节序列。这里的错误信息 'gb2312' codec can't decode byte 0xa8 in position 351527 表示在尝试使用GB2312编码方式来解码字节序列时,无法解码位置为351527的字节0xa8。

GB2312是一个较早的汉字编码标准,主要用于中文环境。但是,0xA8这个字节在GB2312中并没有对应的有效字符,因此解码器无法将其解释为有效的字符。

2、解决方法

(1)确认文件的正确编码格式,如果文件不是GB2312编码,应使用正确的编码格式来解码。

比如可以用 “utf-8”,“GBK” 等常用编码去测试。

# 指定 GBK 编码
soup = BeautifulSoup(response.content.decode('gbk'), 'lxml')

# 指定 utf-8 编码
soup = BeautifulSoup(response.content.decode('utf-8'), 'lxml')

(2)如果上面的编码都无法解决,可以在Python中打开文件时,指定errors='ignore'errors='replace'来忽略或替换无法解码的字节。

# 增加参数errors='replace',忽略错误
with open('data.txt', 'r', encoding='gb2312', errors='replace') as file:
    content = file.read()

希望这篇文章对你有帮助,不断进步!!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值