日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3解决UnicodeDecodeError:'utf-8' codec can't decode byte..问题终极解决方案

發布時間:2024/1/23 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3解决UnicodeDecodeError:'utf-8' codec can't decode byte..问题终极解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x00 問題引出:

最近在做一個買房自動化分析Python腳本,需要爬取網頁。

在使用urllib獲取reqest的response的時候,還要進行解碼。

見語句:

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:breakelse:try:# print(line.decode('utf8'))line.decode('utf8')# 為了暴露出錯誤,最好此處不printexcept:print(str(line))

手寫了一段代碼,可以通過這段代碼的輸出來判斷哪里出現了問題。

1.如果輸出的代碼都是hex形式的,可能就是你選擇的解碼字符集出現了錯誤。對于python2.7 版本的來說,網上有使用這樣一種看上去很霸氣,其實很low的方式,來處理:

#coding=utf8 import sys reload(sys) sys.setdefaultxxxx("utf8")

其實,這可以看做是python2系列版本的小bug,需要自行重新設置一下默認的編碼字符集,如果還要這么設置的話,decode()的參數還拿來干嘛。

所以,在python3版本中,就已經取消了這個方法。

2.如果是字符集出現錯誤,建議多選擇幾種字符集測試一下:選擇的經驗是:如果是爬取到的網頁文件,可以查看網頁文件的meta標簽下的charset屬性值。

例如:

<meta charset="UTF-8">

也可以使用notepad++打開,查看右下角的部位,會指示該文件時哪種編碼。

3.有的情況,是這樣的,整個文件是好的,如果用notepad++打開后,能夠看到文件是可以打開的,似乎什么問題都沒有發生過,但是,用python進行解碼的時候,卻會出現錯誤。

我們運行上面的測試腳本,可以看到出現這樣的情況:

<li id="J_menuHistory" data-page="J_pageHistory">

? ? ? ? ?<a><i class="icon-history"></i>播放歷史? ? \0xe5</a>

當然,這段代碼是我隨手寫的一個例子,這里,可以注意看到這個0xe5,這是無法轉換出來的部分,這是不屬于編碼字符集中的部分。所以,在進行編碼轉換的時候,會報錯。

0x03 解決方法

? ? 1.修改字符集參數,一般這種情況出現得較多是在國標碼(GBK)和utf8之間選擇出現了問題。

? ? 2.出現異常報錯是由于設置了decode()方法的第二個參數errors為嚴格(strict)形式造成的,因為默認就是這個參數,將其更改為ignore等即可。例如:

line.decode("utf8", "ignore")

?

?

總結

以上是生活随笔為你收集整理的Python3解决UnicodeDecodeError:'utf-8' codec can't decode byte..问题终极解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。