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")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM