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。