1. 程式人生 > >Python讀取txt文字出現“ 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence”

Python讀取txt文字出現“ 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence”

1、通過python讀取temp.txt時,出現如下錯誤:


錯誤的意思是:Unicode的解碼(Decode)出現錯誤(Error)了,以gbk編碼的方式去解碼(該字串變成Unicode),但是此處通過gbk的方式,卻無法解碼(can’t decode )。“illegal multibyte sequence”意思是非法的多位元組序列,即沒法(解碼)了。

    此種錯誤,可能是要處理的字串本身不是gbk編碼,但是卻以gbk編碼去解碼 。比如,字串本身是utf-8的,但是卻用gbk去解碼utf-8的字串,所以結果不用說,則必然出錯。

    通過查閱資料,有提出在讀取文字的時候加入引數‘b’,不會提示錯誤,通過輸出讀取的資料顯示。


    針對以上的這個問題,查閱網上資料,可以按照如下的步驟進行嘗試:

(1)在開啟文字時候,可以指明開啟方式:

file = open(path, encoding='gbk')

(2)如果上一步還不能解決,可能是文字中出現的一些特殊符號超出了gbk的編碼範圍,可以選擇編碼範圍更廣的‘gb18030’,如:

 file = open(path, encoding='gb18030'
(3)如果上一步還不能解決,說明文中出現了連‘gb18030’也無法編碼的字元,可以使用‘ignore’屬性忽略非法字元,如:
file = open(path, encoding='gb18030', errors='ignore')
或者
file=open(path).read().decode(‘gb18030’,’ignore’)