今天用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"))