1.背景
使用python的时候经常会遇到文本的编码与解码问题,其中很常见的一种解码错误如下所示:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence
2. 解决方案
2.1 二进制模式
对于非文本文件(如图片、二进制日志等),直接将文件内容以 字节(bytes
) 形式读取,不进行编码解码
FILE_OBJECT= open('order.log','rb')
2.2 文本模式
对于文本文件,文件内容需要被解码为 字符串(str
),可通过 encoding
参数指定具体的编码格式。
step1.首先在打开文本的时候,设置其编码格式为gbk:
FILE_OBJECT= open('1.txt', encoding='gbk')
step2. 若gbk不能解决,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’ 或 UTF-8;
FILE_OBJECT= open('1.txt', encoding='gb18030')
或
FILE_OBJECT= open('order.log','r', encoding='UTF-8')
step3. 若step2仍不能解决,说明文中出现了连‘gb18030’也无法编码的字符,可以使用‘ignore’属性进行忽略:
FILE_OBJECT = open('1.txt', encoding='gb18030',errors=‘ignore’)
或
FILE_OBJECT = open(‘1.txt’).read().decode(‘gb18030’,’ignore’)