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文件操作整理汇总
Oct 21 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
wxPython实现带颜色的进度条
Nov 19 Python
区分python中的进程与线程
Aug 13 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
python进行二次方程式计算的实例讲解
Dec 06 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
PHP动态图像的创建
2006/10/09 PHP
php笔记之常用文件操作
2010/10/12 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
[02:27]刀塔重生降临
2015/10/14 DOTA
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python之yield表达式学习
2014/09/02 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
Python中for循环控制语句用法实例
2015/06/02 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
pytorch forward两个参数实例
2020/01/17 Python
python实现PCA降维的示例详解
2020/02/24 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
师范应届生求职信
2013/11/15 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
小学课外阅读总结
2014/07/09 职场文书
安全演讲稿开场白
2014/08/25 职场文书
倡议书格式
2014/08/30 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
婚礼新人答谢词
2015/01/04 职场文书
中学后勤工作总结2015
2015/07/22 职场文书