UnicodeEncodeError-----(Python)

來源:http://www.crifan.com/unicodeencodeerror_gbk_codec_can_not_encode_character_in_position_illegal_multibyte_sequence/

(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’);

       這樣可以實現,即使對於那些,相對來說是無關緊要的一些特殊字符,也可以成功編碼,避免編碼出錯,提高程序的健壯性。

 

Python 2.x中常見字符編碼和解碼方面的錯誤及其解決辦法:

http://www.crifan.com/summary_python_2_x_common_string_encode_decode_error_reason_and_solution/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章