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

首頁 > 編程 > Python > 正文

Python轉碼問題的解決方法

2020-02-23 04:40:19
字體:
來源:轉載
供稿:網友
比如,若要將某個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.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦甸市| 新营市| 闻喜县| 新余市| 潜山县| 祁阳县| 乌兰县| 阜宁县| 探索| 德保县| 怀来县| 叙永县| 潜山县| 延津县| 鄂州市| 汕头市| 永川市| 镇雄县| 荆门市| 濉溪县| 汤原县| 阿拉善盟| 吉安县| 安达市| 开封县| 宁蒗| 阳东县| 汕头市| 揭东县| 南华县| 南康市| 安徽省| 云霄县| 枝江市| 蕉岭县| 扎鲁特旗| 波密县| 平邑县| 新营市| 家居| 富顺县|