python3編碼問題總結

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。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章