1. 程式人生 > >python中------decode解碼出現的0xca問題解決方法

python中------decode解碼出現的0xca問題解決方法

一。錯誤:

解決方法:

#原始碼
data = sk.recv(1024)
print(str(data,'gbk'))


#修改程式碼
data = sk.recv(1024)
print(str(data,'gbk',‘ignore’))

二。常見錯誤整理

 

0x00 問題引出:
  result = res.decode('utf-8')
  #當執行該語句的時候,會造成異常:
  UnicodeDecodeError:
'utf-8' codec can't decode byte 0xe5 in position 103339: invalid continuation byte

 

0x01 問題分析

 

該情況是由於出現了無法進行轉換的 二進位制資料 造成的,可以寫一個小的指令碼來判斷下,是整體的字符集引數選擇上出現了問題,還是出現了部分的無法轉換的二進位制塊:

#python3
#以讀入檔案為例:
f = open("data.txt","rb")#二進位制格式讀檔案
while True:
    line = f.readline()
    if not line:
        break
    else:
        try:
            #print(line.decode('utf8'))
line.decode('utf8') #為了暴露出錯誤,最好此處不print except: print(str(line))

 

0x03 解決方法

 

修改字符集引數,一般這種情況出現得較多是在國標碼(GBK)和utf8之間選擇出現了問題。
出現異常報錯是由於設定了decode()方法的第二個引數errors為嚴格(strict)形式造成的,因為預設就是這個引數,將其更改為ignore等即可。例如:

line.decode("utf8","ignore"
)