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基础教程之常用运算符
Aug 29 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
python匿名函数的使用方法解析
Oct 10 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
pycharm无法导入lxml的解决办法
Mar 31 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
浅析AngularJS Filter用法
2015/12/28 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python 文件查找及内容匹配方法
2018/10/25 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python同时替换多个字符串方法示例
2019/09/17 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
在校硕士自我鉴定
2014/01/23 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
采购意向书范本
2014/03/31 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书