千锋教育-做有情怀、有良心、有品质的职业教育机构

python2中的Unicode Strings

来源:千锋教育
发布时间:2023-11-07 02:27:19
分享

从python2.0开始,就有一种新的数据类型UnicodeStrings,但是在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')

prints1

如上代码段在JetBrainsPyCharm2016.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中的UnicodeStrings,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python 条件对象 条件对象总是与某种类型的锁对象相关联,锁对象可以通过传入获得,或者在缺省的情况下自动创建。threading.Condition(lock=None)实现条件对象的类。它具有如下方法:acquire(
  • Python 信号量对象 和锁机制一样,信号量机制也是一种实现线程同步的机制,不过它比锁多了一个计数器,这个计数器主要用来计算当前剩余的锁的数量。threading.Semaphore(value=1)信号量实现类,可选参数v
  • Python 事件对象 一个线程发出事件信号,其他线程等待该信号,这是最简单的线程之间通信机制之一。threading.Event实现事件对象的类。它有如下方法:is_set():当内部标志为True时返回True。set(
  • Python 解释器的作用 python解释器的主要作用是将我们在.py文件中写好的代码交给机器去执行,比较常见的解释器包括如下几种:CPython:官方解释器,我们从官网下载安装后获得的就是这个解释器,它使用C语言开发,是使用
  • Python 领域模型 python需求分析阶段不区分面向对象还是面向过程领域模型是完成从需求分析到面向对象设计的一座桥梁领域模型定义:领域模型是对领域内的概念或现实世界中对象的可视化表示,又称为观念模型,领域对象模型,分析
  • Python 图的功能 综述UML是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。要了解一下UML设计中有的图例及基本作用。首先对UML中的各个图的功用做一个简单介绍:用例图描述角色以及角色与用例之间的连