解决‘utf8‘编解码器无法解码字节0xa3异常

今天用Python编写自动数据检索脚本的时候遇到一个问题。花了很多的时间。就是通过xlwt包往Excel中写入DB数据的时候,编译器一直报错UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xa3 in position XXX。

查了好久,后面才知道这个是因为写入DB数据的时候,数据中存在中文符号。Python不能将ascii编码直接输出汉字,需要转换成Unicode。所以因为存在中文字符导致utf8解译报错。中间百度试了很多的方法:

1、import sys
reload(sys)
sys.setdefaultencoding("utf-8") 。

2、各种定义encodeing格式,utf8,gb2312啥的。没有实质性的效果。

最后找到一个方法,实质性的报错是utf8的decode()的模式为Strict模式,正常将Decode更新为Ignore后报错消失。

下面内容为从其他地方转载:

解码的四个参数,特别是出现乱码时很有必要应用这些参数
#decode解码的四个参数
print((b"\x80abc").decode("utf-8","strict"))#出现错误
#加上(U+FFFD)
print((b"\x80abc").decode("utf-8","replace"))
#加反斜杠
print((b"\x80abc").decode("utf-8","backslashreplace"))
#直接忽略
print((b"\x80abc").decode("utf-8","ignore"))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值