1. 程式人生 > >python3出現轉碼問題的總結

python3出現轉碼問題的總結

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出現轉碼問題的總結