Python中Unicode字符串

Python中Unicode字符串

字符串还有一个编码问题。

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。

如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串‘ABC‘在Python内部都是ASCII编码的。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u‘...‘表示,比如:

print u‘中文‘
中文

注意: 不加 u ,中文就不能正常显示。

Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效:

转义:

u‘中文\n日文\n韩文‘

多行:

u‘‘‘第一行
第二行‘‘‘

raw+多行:

ur‘‘‘Python的Unicode字符串支持"中文",
"日文",
"韩文"等多种语言‘‘‘

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。

在3.X版本中,直接用print(‘中文‘)也能输出中文,效果等同于print (u‘‘‘好的,谢谢郭老师‘‘‘)

时间: 2024-10-19 11:47:34

Python中Unicode字符串的相关文章

零基础学python-7.1 python中的字符串简介与常用函数

在python中,字符串变成了一个强大的处理工具集,他是不可变的,也就是说字符串包含字符与字符的顺序,他不可以原处修改 字符串是我们后面需要学习的稍大一点的对象类别--序列的第一个代表 在字符串章节所说到的关于序列的操作,后面的列表与元组一样适用 字符串常用的一些操作与函数 操作 解释 s='' 空字符串 s="abc'd" 双引号和单引号相同 s='abc\n' 转义序列,使用变量完全显示字符, 只有使用print函数才能够显示转义 s="""aaaaa

Python中的字符串处理

Python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.如下表: 转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 \f 换页 \oyy 八进制数yy代表的字符,例如:\o12代表换行 \xyy 十进制数yy代表的字符,例如:\x0a代表换行 \other 其它的字符以普通格式输出 Python字符

Python中的字符串

在Python中,字符串的类型可以归为三类:str,bytes,bytearray,其中str和bytes是不可变类型,而bytearray是可变类型.由于Python 2.X和Python 3.X的区别,相应的,它们在Python 2.X和Python 3.X中有不同的意义. 在Python 2.X中,str即可以表示8bit的文本(例如ASCII文本,Latin-1文本),也可以表示二进制数据,也就是说,在Python 2.X中,str和bytes类型是等价的:如果要表示Unicode文本,

《python解释器源码剖析》第3章--python中的字符串对象

3.0 序 我们知道python中的字符串属于变长对象,当然和int也是一样,底层的结构体实例所维护的数据的长度,在对象没有定义的时候是不知道的.当然如果是python2的话,底层PyIntObject维护的就是一个long,显然在没创建的时候就知道是1. 可变对象维护的数据的长度只能在对象创建的时候才能确定,举个例子,我们只能在创建一个字符串或者列表时,才知道它们所维护的数据的长度,在此之前,我们对此是一无所知的. 注意我们在前面提到过可变对象和不可变对象的区别,在变长对象中,实际上也可以分为

《python源码剖析》笔记 python中的字符串对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.      PyStringObject --> 变长不可变对象 typedef struct{ PyObject_VAR_HEAD//ob_size变量保存着对象中维护的可变长度内存的大小 longob_shash; //缓存该对象的hash值,用于dict的查询 intob_sstate; //标志该对象是否经过intern机制的处理 char ob_sval[1];// 字符指针

[笔记] 创建python中的字符串translator

将python中的字符串的某些字符转化为特定字符是经常用到string库中的maketrans()函数,以及translate()函数. 但是这两个函数比较抽象: maketrans函数产生的对象是一个表,这个数据结构对初学者并不友好. tranlate(table, deleteValue)函数所需的第一个参数是个表结构,也就是maketrans的返回值,deleteValue是所要删除的字符.这第二个参数很别扭:一个translate函数,有时候还能删除某些字符. 而且使用过程中,往往两个函

python中unicode和str的组合

python中unicode对象和str对象拼接在一起,会自动将str对象转换成unicode对象 即:a="aa" b=u"bb" c=a+b type(c)会打印出此对象为unicode对象 另外,json.loads(a)返回的对象,key和value的类型均是unicode类型

python中修改字符串的值

demo: info = 'abc' 如果要把上面的字符串info里面的c替换成d,要怎么操作呢? 方法一:使用python中的replace()方法 语法: str.replace(old, new[, max]) 参数: old -- 将被替换的子字符串. new -- 新字符串,用于替换old子字符串. max -- 可选字符串, 替换不超过 max 次 >>> info = "abc" >>> str = info.replace("

python中分割字符串split切割并选择输出 逐行读取文件后字符串拼接

字符串根据分隔符切割后输出,一下面 #!/usr/bin/python # -*- coding: utf-8 -*- str="abc,123 efg,567" #以空行分割后输出 print str.split(); #以','分割2次后输出 print str.split(',',2); #以','分割2次后输出地2个参数,1是从0开始,代表第二个参数 print str.split(',',2)[1]; 输出结果如下: ['abc,123', 'efg,567'] ['abc'