天天看點

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則包含全世界所有國家需要用到的字元。
    python運作時出現UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 14: illegal ...的解決辦法解決辦法:

擴充資料

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

繼續閱讀