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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python使用scrapy发送post请求的坑
Sep 04 Python
python中的句柄操作的方法示例
Jun 20 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
python logging.info在终端没输出的解决
May 12 Python
Python的scikit-image模块实例讲解
Dec 30 Python
教你怎么用python爬取爱奇艺热门电影
May 20 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 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
在php中取得image按钮传递的name值
2006/10/09 PHP
php公用函数列表[正则]
2007/02/22 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python实现线程池的方法
2015/06/30 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
初中生学习的自我评价
2013/11/14 职场文书
银行简历自我评价
2014/02/11 职场文书
妇联主席先进事迹
2014/05/18 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技