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类定义的讲解
Nov 01 Python
python提取页面内url列表的方法
May 25 Python
python简单实现刷新智联简历
Mar 30 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python生成器以及应用实例解析
Feb 08 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
深入浅析python 协程与go协程的区别
May 09 Python
python3实现弹弹球小游戏
Nov 25 Python
flask框架中的cookie和session使用
Jan 31 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
如何用python清洗文件中的数据
Jun 18 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检测用户语言的方法
2015/06/15 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python爬取个性签名的方法
2018/06/17 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
python利用platform模块获取系统信息
2020/10/09 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
售后服务承诺书
2014/03/26 职场文书
关于保护环境的建议书
2014/05/13 职场文书
询价采购方案
2014/06/09 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript