Python學習筆記(一)轉碼問題的解決的解決方法:“ignore”
Python轉碼問題的解決方法:“ignore”
若希望將Json檔案轉化為python形式的Unicode字串,可以如下操作unicodestr = json.loads(html.decode("gbk"))
但在實際開發中,這種辦法時常會出現異常:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 205: illegal multibyte sequence
經網上查詢瞭解到這是因為遇到了非法字元——尤其是在某些用C/C++編寫的程式中,全形空格往往有多種不同的實現方式,比如\xa3\xa0,或者\xa4\x57,這些字元,看起來都是全形空格,但它們並不是“合法”的全形空格(真正的全形空格是\xa1\xa1),因此在轉碼的過程中出現了異常。
這樣的問題很讓人頭疼,因為只要字串中出現了一個非法字元,整篇文章就都無法轉碼。
unicodestr = json.loads(html.decode("gbk",“ignore”))
因為decode的函式原型是decode([encoding], [errors='strict']),可以用第二個引數控制錯誤處理的策略,預設的引數就是strict,代表遇到非法字元時丟擲異常;
如果設定為ignore,則會忽略非法字元;
如果設定為replace,則會用?取代非法字元;
如果設定為xmlcharrefreplace,則使用XML的字元引用。
此解決方法實測有效,資料來源:http://www.jb51.net/article/16104.htm,特此感謝。