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 相关文章推荐
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
python得到单词模式的示例
Oct 15 Python
详解django的serializer序列化model几种方法
Oct 16 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
Form表单及django的form表单的补充
Jul 25 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
python实现门限回归方式
Feb 29 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
php常用的工具开发整理
2019/09/26 PHP
基于jquery封装的一个js分页
2011/11/15 Javascript
chrome原生方法之数组
2011/11/30 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
javascript显示动态时间的方法汇总
2018/07/06 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
造价工程师个人求职信
2013/09/21 职场文书
触摸春天教学反思
2014/02/03 职场文书
给校长的建议书500字
2014/05/15 职场文书
销售团队获奖感言
2014/08/14 职场文书
读后感作文评语
2014/12/25 职场文书
给老师的感谢信
2015/01/20 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书