Python報錯 “UnicodeDecodeError: ‘gb2312’ codec can’t decode byte 0xa4 in position… : illegal multibyte sequence”


一、報錯場景

使用python遇到報錯:“UnicodeDecodeError: ‘gb2312’ codec can’t decode byte 0xa4 in position… : illegal multibyte sequence”一般有如下兩種場景:

1.爬取中文網站內容

html = urllib.request.urlopen(request).read().decode("gb2312")

2.讀取gbk編碼的文件

result = open(filename, 'r', encoding='gb2312')

二、報錯原因

gb2312收錄的中文字符集不夠全面,在遇到如繁體字的時候會出現解碼錯誤。

漢字字符集范圍 gb2312 < gbk < gb18030

三、報錯解決

1.忽略解碼錯誤

html = urllib.request.urlopen(request).read().decode('gb2312',errors = 'ignore')

decode函數默認的參數就是strict,decode([encoding], [errors='strict']),可以用第二個參數控制錯誤處理的策略,strict表示遇到非法字符時拋出異常;
如果設置為ignore,則會忽略非法字符;
如果設置為replace,則會用?取代非法字符;

2.將gbk2312替換為中文字符集更全面的gbk

result = open(filename, 'r', encoding='gbk')

 


免責聲明!

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



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