错误的意思是:Unicode的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。“illegal multibyte sequence”意思是非法的多字节序列,即没法(解码)了。
出现这种问题的原因时,需要处理的字符串本身不是gbk编码,但是又使用gbk编码。比如,我们的字符串本身是utf-8的,但是却用gbk去解码utf-8的字符串,所以结果必然出错。
通过查询部分回答提供了两种解决方案。
1.使用open(‘order.txt’,‘r’, encoding=‘UTF-8’),用UTF-8解码
或者是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’
2.通过改变读取方式open(‘order.txt’,‘rb’),(不建议这样使用)
这种方法是采用二进制的读取方式,这样会造成数据中存在很多换行符\n,与实际的文本无关,即使通过.split()去除,其作用也不大。
3.如果我们更改编码方式,依然不起作用(文中出现了’gb18030’也无法编码的字符),那我们可以使用‘ignore’属性忽略非法字符。(推荐使用)
open(path, encoding='gb18030', errors='ignore')