Python檔案操作—UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22: illegal multibyte sequence
阿新 • • 發佈:2022-03-25
檔案操作with open() as 時報錯
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22:
illegal multibyte sequence
解決辦法一:在後面加上檔案編碼格式encoding = ‘utf-8’
FILE_OBJECT= open('order.log','r', encoding='UTF-8')
解決辦法二:
FILE_OBJECT= open('order.log','rb')
utf-8和gbk編碼
GBK: 專門用來解決中文編碼,雙位元組。是在國家標準GB2312基礎上擴容後相容GB2312標準。包含全部中文字元。
UTF-8: 解決國際上制度的一種多位元組編碼,對英文使用8位(1個位元組),中文使用24位(3個位元組)來編碼。
對於英文字元較多的論壇適用於UTF-8節省空間。包含全世界所有國家需要用到的字元。
GBK和UTF-8文字編碼的特點:
GBK的文字編碼是雙位元組來表示的,即不論中、英文字元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。
至於UTF-8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即一個位元組),中文使用24位(三個位元組)來編碼。對於英文字元較多的論壇則用UTF-8節省空間。
GBK和UTF-8文字編碼的區別:
GBK包含全部中文字元;
UTF-8則包含全世界所有國家需要用到的字元。
GBK是在國家標準GB2312基礎上擴容後相容GB2312的標準;(好像還不是國家標準)
UTF-8編碼的文字可以在各國各種支援UTF8字符集的瀏覽器上顯示。
比如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,而無需他們下載IE的中文語言支援包。
所以,對於英文比較多的論壇 ,使用GBK則每個字元佔用2個位元組,而使用UTF-8英文卻只佔一個位元組。
注意:
UTF-8版本雖然具有良好的國際相容性,但中文需要比GBK/BIG5版本多佔用50%的資料庫儲存空間,因此並非推薦使用,僅供對國際相容性有特殊要求的使用者使用。