python3出現轉碼問題的總結
阿新 • • 發佈:2017-08-26
char val 子集 解決辦法 忽略 特殊字符 err title 可能
對於此(類)問題:
(1)出現UnicodeEncodeError –> 說明是Unicode編碼時候的問題;
(2) ‘gbk’ codec can’t encode character –> 說明是將Unicode字符編碼為GBK時候出現的問題;
此時,往往最大的可能就是,本身Unicode類型的字符中,包含了一些無法轉換為GBK編碼的一些字符。
解決辦法是:
- 方案1:
在對unicode字符編碼時,添加ignore參數,忽略無法無法編碼的字符,這樣就可以正常編碼為GBK了。
對應代碼為:
gbkTypeStr = unicodeTypeStr.encode(“GBK“, ‘ignore’); |
- 方案2:
或者,將其轉換為GBK編碼的超集GB18030 (即,GBK是GB18030的子集):
gb18030TypeStr = unicodeTypeStr.encode(“GB18030“); |
對應的得到的字符是GB18030的編碼。
【題外話】
對於上述中,將原先的utf-8的字符轉換為Unicode的時候,其實更加安全的做法,也可以將:
titleUni = titleHtml.decode(“UTF-8”);
替換為:
titleUni = titleHtml.decode(“UTF-8”, ‘ignore’);
這樣可以實現,即使對於那些,相對來說是無關緊要的一些特殊字符,也可以成功編碼,避免編碼出錯,提高程序的健壯性。
python3出現轉碼問題的總結