国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python轉碼問題的解決方法

2019-11-25 18:45:45
字體:
來源:轉載
供稿:網友
比如,若要將某個String對象s從gbk內碼轉換為UTF-8,可以如下操作
s.decode('gbk').encode('utf-8′)
可是,在實際開發中,我發現,這種辦法經常會出現異常:
UnicodeDecodeError: ‘gbk' codec can't decode bytes in position 30664-30665: illegal multibyte sequence
這 是因為遇到了非法字符――尤其是在某些用C/C++編寫的程序中,全角空格往往有多種不同的實現方式,比如/xa3/xa0,或者/xa4/x57,這些 字符,看起來都是全角空格,但它們并不是“合法”的全角空格(真正的全角空格是/xa1/xa1),因此在轉碼的過程中出現了異常。
這樣的問題很讓人頭疼,因為只要字符串中出現了一個非法字符,整個字符串――有時候,就是整篇文章――就都無法轉碼。

解決辦法:
s.decode('gbk', ‘ignore').encode('utf-8′)
因為decode的函數原型是decode([encoding], [errors='strict']),可以用第二個參數控制錯誤處理的策略,默認的參數就是strict,代表遇到非法字符時拋出異常;
如果設置為ignore,則會忽略非法字符;
如果設置為replace,則會用?取代非法字符;
如果設置為xmlcharrefreplace,則使用XML的字符引用。

python文檔

decode( [encoding[, errors]])
Decodes the string using the codec registered for encoding. encoding defaults to the default string encoding. errors may be given to set a different error handling scheme. The default is 'strict', meaning that encoding errors raise UnicodeError. Other possible values are 'ignore', 'replace' and any other name registered via codecs.register_error, see section 4.8.1.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双柏县| 从化市| 海宁市| 健康| 温州市| 固镇县| 高尔夫| 沭阳县| 琼中| 泽州县| 铁岭县| 抚松县| 丽水市| 五常市| 西昌市| 桃源县| 桓台县| 枣强县| 隆安县| 安多县| 大同市| 兴宁市| 固安县| 伊川县| 平远县| 盐边县| 北宁市| 四会市| 鲁山县| 温州市| 南安市| 泽库县| 罗田县| 江山市| 三门县| 沅陵县| 延安市| 思茅市| 绥阳县| 眉山市| 雷山县|