python 读取文本文件,报出gbk问题
问题如下:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 225: illegal multibyte sequence
因为如果你没有指定打开文件编码方式的话,windows默认是gbk编码打开(Linux默认为utf-8编码),而你的文件是utf-8编码,
所以有的字符gbk无法识别也就是:can't decode 某某位置的字节码
解决办法就是:
指定打开文件的编码方式,
with open("data.txt",'r',encoding='utf-8') as data:
题外话:因为文件在磁盘是以二进制的形式存储的,人要打开,要能看懂,必须变成人能看懂的形式,这就是编码encode,python编码以前使用的是ASCII编码,现在都是使用的Unicode编码集(python3中str就为Unicode码),他是一个中间码,注意是中间码而不是特指哪个编码方式,utf-8 或者gbk都是Unicode编码集的变形形式。想要将一个编码形式的文件变成另一个编码形式,就要使用中间码Unicode作为编码形式转换的桥梁,这就是解码decode,解码为中间码Unicode。
来源:https://blog.csdn.net/hubingshabi/article/details/101356982