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!