Python转码问题的解决方法


Posted in Python onOctober 07, 2008

比如,若要将某个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.

Python 相关文章推荐
python self,cls,decorator的理解
Jul 13 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
python冒泡排序简单实现方法
Jul 09 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
一百多行python代码实现抢票助手
Sep 25 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
Python Pandas知识点之缺失值处理详解
May 11 Python
Python函数学习笔记
Oct 07 #Python
Python日期操作学习笔记
Oct 07 #Python
wxPython 入门教程
Oct 07 #Python
新手该如何学python怎么学好python?
Oct 07 #Python
Python 调用VC++的动态链接库(DLL)
Sep 06 #Python
Python urlopen 使用小示例
Sep 06 #Python
Python 网络编程起步(Socket发送消息)
Sep 06 #Python
You might like
我的论坛源代码(五)
2006/10/09 PHP
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
深入php内核之php in array
2015/11/10 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
土木工程毕业生自荐信
2013/11/12 职场文书
家长学校工作方案
2014/05/07 职场文书
敬老月活动总结
2014/08/28 职场文书
病人慰问信范文
2015/02/15 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python字符串常规操作大全
2021/05/02 Python
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技