当前位置:  编程技术>python

Python转码问题的解决方法

    来源: 互联网  发布时间:2014-09-04

    本文导语:  比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作 s.decode('gbk').encode('utf-8′) 可是,在实际开发中,我发现,这种办法经常会出现异常: UnicodeDecodeError: ‘gbk' codec can't decode bytes in position 30664-30665: illegal multibyte seq...

比如,若要将某个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++编写的程序中,全角空格往往有多种不同的实现方式,比如xa3xa0,或者xa4x57,这些 字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是xa1xa1),因此在转码的过程中出现了异常。
这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字符串——有时候,就是整篇文章——就都无法转码。

解决办法:
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.

    
 
 

您可能感兴趣的文章:

  • pycharm 使用心得(九)解决No Python interpreter selected的问题
  • Python和php通信乱码问题解决方法
  • SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
  • python中文乱码的解决方法
  • linux下用eclipse进行开发,尤其打开较大的python代码模块,老是会卡,请问大家有没有好点的解决办法,如能提供具体设置,不胜感激
  • python解决字典中的值是列表问题的方法
  • Python安装Imaging报错:The _imaging C module is not installed问题解决方法
  • 解决python写的windows服务不能启动的问题
  • 使用python搭建Django应用程序步骤及版本冲突问题解决
  • Python实现全局变量的两个解决方法
  • Python编写的com组件发生R6034错误的原因与解决办法
  • python 示例分享---逻辑推理编程解决八皇后
  • python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
  • 从零学python系列之新版本导入httplib模块报ImportError解决方案
  • Python实现动态添加类的属性或成员函数的解决方法
  • Python BeautifulSoup中文乱码问题的2种解决方法
  • python sqlobject(mysql)中文乱码解决方法
  • python使用递归解决全排列数字示例
  • 在python的WEB框架Flask中使用多个配置文件的解决方法
  • 解决谷歌搜索技术文章时打不开网页问题的python脚本
  • Python获取网页编码的方法及示例代码
  • 使用setup.py安装python包和卸载python包的方法
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 如何运行Python程序的方法
  • python对XML的解析方法(SAX,DOM,ElementTree)介绍
  • Python3实现生成随机密码的方法
  • python list 合并连接字符串的方法
  • Python开发的单词频率统计工具wordsworth使用方法
  • Python实现多行注释的另类方法
  • Python判断变量是否已经定义的方法
  • python中定义结构体的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python版本的问题
  • python安装的问题
  • gvim7.3支持python3的问题
  • Python C 扩展遇到的一个问题
  • Python + OpenCV 问题,求助!!
  • python安装问题,rpm命令显是缺少库文件
  • python如何删除一个目录下的所有问题件
  • 我有一个问题与大家讨论一下,关于python在64位sun unix下的运行速度
  • 学习python处理python编码问题
  • python 操作postgresql的pgdb库的问题
  • django及python的几个问题请指教.谢谢
  • python 改文件名等问题
  • python subprocess问题
  • 100分请教高手一个python帮助文档的问题
  • python益智游戏计算汉诺塔问题示例
  • emerge vmware-workstation的python版本问题
  • 使用python实现拉钩网上的FizzBuzzWhizz问题示例
  • python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
  • python完成FizzBuzzWhizz问题(拉勾网面试题)示例
  • python抓取网页时字符集转换问题处理方案分享
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • Python不使用print而直接输出二进制字符串
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • Python中实现json字符串和dict类型的互转
  • python读取csv文件示例(python操作csv)
  • python异常信息堆栈输出到日志文件
  • python基础教程之python消息摘要算法使用示例
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 新手该如何学python怎么学好python?
  • Python namedtuple对象json序列化/反序列化及对象恢复


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3