一。錯誤:
解決方法:
#源代碼 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")