【問題】
用Python抓取網頁html
出現如下錯誤:
exception raised:'gbk' codec can't encode character u'\xa0' in position 73: illegal multibyte sequence
【問題原因】
對于此Unicode字符(html),需要print出來的話,由于本地系統是Windows中的cmd,默認codepage是CP936,即GBK的編碼,所以python解釋器需要先將上述的Unicode字符html編碼為GBK,然后再在cmd中顯示出來。
【解決辦法】
方案1:
在對unicode字符編碼時,添加ignore參數,忽略無法無法編碼的字符,這樣就可以正常編碼為GBK了。
對應代碼為:
print html.encode(“GBK“,‘ignore’);
方案2:
或者,將其轉換為GBK編碼的超集GB18030(即,GBK是GB18030的子集):
print html.encode(“GB18030“);
對應的得到的字符是GB18030的編碼。
新問題出現:
改了代碼之后,雖然沒有報之前的那個錯誤,但是打印出來文字,英文文字沒有出現亂碼,但是中文出現亂碼的情況
添加以下代碼即可解決問題:
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')