Python字符串的encode与decode研究心得乱码问题解决方法
来源:诚信在线    发布时间:2017-06-28 19:09:56

  #!/usr/bin/env python

  如正在UliPad外运转以下代码:

  则输出:\xe4\xb8\xad\xe6\x96\x87,那是控制台信息输出窗口依照ascii编码输出utf8编码的字符串的后果。

  会提醒:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-一: ordinal not in range(128)。那是由于UliPad正在英文WindowsXP上的控制台信息输出窗口是依照ascii编码输出的(英文体系的默许编码是ascii),而下面代码中的字符串是Unicode编码的,以是输出时孕育发生了谬误。

  #!/usr/bin/env python

  print s.encode('gb2312')

  为何会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-一: ordinal not in range(128)”?本文便去研究一下这个问题。

  复制代码 代码以下:

  if isinstance(s, unicode):

  将末了1句改成:print s.encode('gb2312')

  unicode(str,'gb2312')取str.decode('gb2312')是同样的,都是将gb2312编码的str转为unicode编码 

  则能精确输出“中文”两个字。

  s=u"中文"

  decode的感化是将其余编码的字符串转换成unicode编码,如str1.decode('gb2312'),默示将gb2312编码的字符串str1转换成unicode编码。 

  假如一个字符串曾经是unicode了,再举行解码则将堕落,因而平常要对于其编码形式能否为unicode停止断定:

  假如字符串是如许界说:s=u'中文'

  该段步伐正在英文WindowsXP上输出为:ascii 

  print s.decode('utf-八').encode('gb2312')

  应用str.__class__能够检察str的编码模式

  怎样得到体系的默许编码?

  则该字符串的编码便被指定为unicode了,即python的外部编码,而取代码文件自身的编码无关。因而,对付这种情况作编码转换,只需求间接应用encode办法将其转换成指定编码便可。

  else:

  encode的感化是将unicode编码转换成其余编码的字符串,如str2.encode('gb2312'),透露表现将unicode编码的字符串str2转换成gb2312编码。 

  #s=u"中文"

  道理道了半天,最厥后个包治百病的吧:)

  #s="中文"

  若最初1句改成:print s.encode('utf8')

  用非unicode编码方式的str去encode会报错 

  字符串正在Python外部的示意是unicode编码,因而,正在作编码转换时,平常需求以unicode作为中央编码,即先将其余编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 

  import sys

  如:s='中文'

  isinstance(s, unicode)  #用来推断是不是为unicode 

  print sys.getdefaultencoding()  

  代码外字符串的默许编码取代码文件自身的编码同等。 

  是以,转码的时辰一定要先弄理解,字符串str是什么编码,而后decode成unicode,而后再encode成其余编码

  #coding=utf-八

  print s 

  正在某些IDE外,字符串的输出老是浮现乱码,以至差错,实在是因为IDE的成效输出控制台本身不克不及表现字符串的编码,而不是法式自己的题目。 

  #coding=utf-八

  你能够感兴趣的文章:Python 字符串操作方法大全python 字符串split的用法分享Python顶用format函数格式化字符串的用法python字符串衔接的N种形式总结Python时候戳取光阴字符串相互转换实例代码Python去掉字符串外空格的要领python判别字符串是不是包孕子字符串的办法Python字符串处置实例详解

  若是是正在utf8的文件外,该字符串便是utf8编码,若是是正在gb2312的文件外,则其编码为gb2312。这种情况高,要举行编码转换,皆必要先用decode要领将其转换成unicode编码,再运用encode要领将其转换成其余编码。一般,正在不指定特定的编码体例时,都是运用的体系默许编码建立的代码文件。 

  s="中文"


诚信在线 除注明原创以外,其余均来自互联网以及微信朋友圈,如有侵权请联系站长立即删除!
文章地址:http://www.my517517.com/CY/20170628337.html



上一篇:python数据结构之二叉树的建立实例 下一篇:Python科学计算环境推荐