1. 程式人生 > >python執行時出現UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 14: illegal ...的解決辦法

python執行時出現UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 14: illegal ...的解決辦法

在python第四次實驗作業時:

python在讀取檔案時出現“UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 14: illegal multibyte sequence”錯誤

翻譯為:UnoDeDebug錯誤:“GBK”編解碼器不能解碼位置14中的位元組0x89:非法多位元組序列

可能是解碼的時候讀取檔案和編輯器所用的編碼導致的(我讀取的文件是UTF - 8,但pycharm是GBK)。

解決辦法:

  第一種:

FILE_OBJECT= open('order.log','r', encoding='UTF-8')

  第二種:

FILE_OBJECT= open('order.log','rb')

GBK和UTF - 8的區別:

  1. GBK是在國家標準GB2312基礎上擴容後相容GB2312的標準(好像還不是國家標準)。GBK編碼專門用來解決中文編碼的,是雙位元組的。不論中英文都是雙位元組的。
  2. UTF-8 編碼是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即一個位元組),中文使用24位(三個位元組)來編碼。對於英文字元較多的論壇則用UTF-8 節省空間。另外,如果是外國人訪問你的GBK網頁,需要下載中文語言包支援。訪問UTF-8編碼的網頁則不出現這問題。可以直接訪問。
  3. GBK包含全部中文字元;

  4. UTF-8則包含全世界所有國家需要用到的字元。

擴充套件資料

      網頁編寫UTF-8和GBK哪個編碼好,根據個人需要,如果你主要做中文程式的開發,客戶也主要是中國人的話就用GBK吧,因為UTF-8編碼的中文使用了三個位元組,用GBK節省了空間。如果做英文網站開發,還是用utf-8吧,因為utf-8中英文只佔一個位元組。GBK中英文也是兩個位元組的,並且國外客戶訪問GBK要下載語言包。如果你的網站是中文的,但國外使用者也不少,最好也用UTF-8的吧。