python2中的Unicode Strings

发布时间:2022-04-21 09:42:14 人气:28 作者:多测师

  从python2.0开始,就有一种新的数据类型 Unicode Strings,但是在python3的到来,这个概念已经被弱化了。python2.*的默认编码格式是ASCII码,而python3.*的默认编码格式已经换成了Unicode,所以2.*还是有必要提一下。在python2系列中,如果要操作非ASCII码的字符,就可以用这个对象进行操作。它可以跟strings进行任意的转换。比如,现在有一个字符串变量s,保存中文字符"测试",现在直接打印是会报错的,因为存在一个非ASCII码的字符,python2.*是无法进行解析的,如果在上面加个u,就能正常显示(在集成开发工具内,设置集成工具和工程的默认编码为utf-8)

  # -*- coding: gbk -*-if __name__=="__main__":

  s1 = '测试'

  #s1 = s1.decode('gbk')

  s1 = unicode(s1,'gbk')

python2中的Unicode Strings

  print s1

  如上代码段在JetBrains PyCharm 2016.1.2内,使用2.7.11做解释器,做了一个小测试~~

  1. 不设置源文件编码格式,输入中文,后直接打印,会提示存在‘non-ascii’,编译不通过

  2. 设置源文件编码格式为gbk,输入中文后,打印乱码

  3. 设置源文件编码格式为gbk,输入中文s1 = u'测试'后,打印正常

  4. 设置源文件编码格式为gbk,输入中文后,先将字符串解码decode或者unicode方法,后打印正常

  5. 设置源文件编码格式为utf-8,输入中文后直接输出正常

  6. 设置工具和工程的默认编码为gbk,输入中文后,打印正常。

  然后有点明白了~~在python2系列的IDE中声明一个非ASCII码的字符串,不声明源文件的编码格式,编译是不通过的,因为源文件python2的解析器尝试使用默认的ASCII码去编译,却发现存在非ASCII码的字符串;如果在此基础上设置源文件的编码格式为gbk,编译是可以通过了,但是打印出来的字符串是乱码的,为啥乱码呢?因为IDE是采用utf-8的编码格式,而源文件是采用gbk格式,所以会出现中文乱码现象,单纯的解决乱码有3种可行方式,一个方法是:将源文件里需要打印的字符串解码成utf-8(或者unicode)再打印;另一个方法是:修改源文件的编码格式直接为utf-8,最后一种是:修改IDE编码格式为gbk;显然第二种方法是最佳方法。

  以上内容为大家介绍了python2中的Unicode Strings,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线