python中------decode解碼出現的0xca問題解決方法
阿新 • • 發佈:2018-12-31
一。錯誤:
解決方法:
#原始碼 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")