1. 程式人生 > >解決python錯誤 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in position 1: illegal multibyte sequence

解決python錯誤 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in position 1: illegal multibyte sequence

family can accep div 分析 忽略 數據 程序 osi

報錯的代碼:

url= ‘http://kaijiang.500.com/shtml/ssq/19001.shtml‘
page =urllib.request.urlopen(url)
content = page.read().decode(‘gb2312‘)

  

報這個錯的原因是獲取到的網頁內容是經過壓縮了的,打開url可以看到請求head

Accept-Encoding:gzip, deflate

一種方式是請求時把Accept-Encoding設為空,這樣的話網頁數據未壓縮,會相對比較大,增加網絡傳輸時間 另一種方式就是對請求後的數據解壓,顯然這個方式處理會更快,如下
content = gzip.decompress(page.read()).decode(‘gb2312‘)

可是修改之後發現運行還是報錯,這時候發現應該是因為網頁中含有編碼集之外的字符(網頁內容指定charset是gb2312),就算加到更大範圍還是報錯(PS:漢字字符集範圍 gb2312 < gbk < gb18030)

這時候選擇忽略這些無法解碼的字符

content = gzip.decompress(page.read()).decode(gb2312,ignore)

再運行代碼,發現這個問題已經解決了(如果你看了我前面一篇雙色球分析的程序,現在應該知道為什麽有時會報錯了~~)

解決python錯誤 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in position 1: illegal multibyte sequence