1. 程式人生 > 其它 >Python檔案操作—UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22: illegal multibyte sequence

Python檔案操作—UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22: illegal multibyte sequence

檔案操作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%的資料庫儲存空間,因此並非推薦使用,僅供對國際相容性有特殊要求的使用者使用。