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自动化测试之连接几组测试包实例
Sep 28 Python
Python中表示字符串的三种方法
Sep 06 Python
Python装饰器模式定义与用法分析
Aug 06 Python
Python subprocess库的使用详解
Oct 26 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
python向图片里添加文字
Nov 26 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
Python实现中值滤波去噪方式
Dec 18 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
详解Python IO口多路复用
Jun 17 Python
python 录制系统声音的示例
Dec 21 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以ROOT权限执行系统命令的方法
2011/02/10 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
主题班会演讲稿
2014/05/22 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
家长高考寄语
2015/02/27 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers