#UnicodeDecodeError
偶遇场景
pycharm运行代码好好的,突然debug的时候报错,而且直接运行没问题,想调试就不行,报错内容如下:
line 306, in _on_run r = r.decode(‘utf-8’) UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 1022-1023: unexpected end of data
分析解决
UnicodeDecodeError通常发生在对字符串进行解码时遇到了一个不合法的字节序列。你试图将一个不包含有效UTF-8编码的字节序列解码成字符串时就可能会遇到这种情况。如果代码中有相关设置,需要先确认数据源确实是UTF-8编码,如果不是,你需要使用正确的编码来解码。本人遇到的情况显然不是代码问题,一般情况下,这都是因为中文路径导致的。需要将中文路径名改为英文,甚至py文件名也要改。
如果上面的方法都试过了,还有一种烧套路(没试过)。这种方案需要去修改pycharm的源文件代码。找到你报错的那一行代码,r = r.decode(‘utf-8’),然后将这行代码做如下替换,保存代码,重启pycharm就搞定了。
try:
r = r.decode('utf-8', errors='ignore')
except UnicodeDecodeError:
r = r.decode('utf-8', errors='replace')
为什么这样修改一下就解决问题呢?
其实很简单,出现异常报错是由于decode()方法的第二个参数errors 的默认值为严格(strict)造成的,将其更改为(ignore)忽略就ok了
参考https://zhuanlan.zhihu.com/p/183911230
Ps.正如突然的bug找不到缘由,也可能你不管他过会儿或者重启个电脑,嘿!他又好了^_0