UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 3880: invalid continuation byte

今天生产环境的报错,昨天执行得好好的代码,突然报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 3880: invalid continuation byte

源代码很简单,就是都一个日志文件,然后进行一些代码逻辑处理
代码:

buffer =open(file, 'r')
for line in buffer:
    xxxx

昨天还执行得好好的,今天突然出错。

试过几个解决方案,最终这个方案起作用了:

buffer =open(file, 'r',encoding='ISO-8859-1')
for line in buffer:
    xxxx

日志文件格式是utf-8,一般来说这都是默认的文件编码格式。

ISO-8859-1 查了一下,属于 西欧语系。

看了网友的解释,上面这个问题是是编码解码的问题,就是‘utf-8’不能解码位置3880的那个字节(0xce),也就是这个字节超出了utf-8的表示范围了。
而 ISO-8859-1 这个编码可以正常解码。

关于python的Unicode编解码,可以看看这个链接:
https://segmentfault.com/a/1190000004625718

虽然出错的莫名奇妙,但是幸运找到这个解决方案,而且 it works!

posted @ 2020-10-17 10:41  水木青楓  阅读(592)  评论(0编辑  收藏  举报