Python学习之道-错误笔记
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte
问题引出
在用Python编写自己的上位机脚本时,从串口读取到的bytes要转成str显示。
由于存在汉字,使用data.decode('utf-8')时提示错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 2: invalid continuation byte
问题分析
该情况是由于出现了无法进行编码转换的 bytes数据 造成的,单片机使用的汉字编码是GB2312,而python脚本中使用是 Unicode编码
参考:
深入了解单片机与汉字编码…… - MCU综合技术区 单片机论坛
因此改成data.decode('GB2312')
对于UnicodeDecodeError: 'utf-8' codec can't decode byte错误,参考以下博文的方法
Python3解决UnicodeDecodeError: ‘utf-8’ codec can’t decode byte…问题 终极解决方案 - wotchin的技术博客 - 优快云博客
1、修改字符集参数,一般这种情况出现得较多是在国标码(GBK)和utf8之间选择出现了问题。
2、出现异常报错是由于设置了decode()方法的第二个参数errors为严格(strict)形式造成的,因为默认就是这个参数,将其更改为ignore等即可。例如:
line.decode(“utf8”,“ignore”)
在使用Python处理串口数据时遇到`UnicodeDecodeError: 'utf-8' codec can't decode byte`的问题,原因是单片机发送的汉字编码为GB2312,而Python脚本采用Unicode。解决方法包括修改字符集参数和调整decode方法的errors参数为'ignore'来忽略无法转换的字节。
1万+

被折叠的 条评论
为什么被折叠?



