python的字符串是unicode字符

时间:2016-03-25 11:19:47

标签: python unicode

python 3字符串中的Unicode characters是什么意思?

  

从Python 3.0开始,该语言具有包含的str类型   Unicode字符,表示使用“unicode rocks!”创建的任何字符串,   'unicode rocks!',或三重引用的字符串语法存储为   Unicode的

来自python doc。

对于字符串abc,Python是否在内存中保存[61,62,63]? (因为a是U + 0061)

unicode字符是否意味着unicode代码点?

1 个答案:

答案 0 :(得分:0)

  

unicode字符是否意味着unicode代码点?

是和否。这取决于python的版本,以及它是如何构建的。

对于2.2到3.2版本,python支持窄版和宽版unicode版本(参见PEP-261)。在狭窄的版本中,unicode范围仅限于BMP

Python 3.2.6 (default, Feb 21 2016, 12:42:00)
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> sys.maxunicode
65535

所以此范围之外的字符必须表示为surrogate pair

>>> s = ''
>>> ord(s)
128556
>>> len(s)
2

随着PEP-0393的引入,python3不再支持窄版本,因此一个字符总是等同于一个代码点:

Python 3.5.1 (default, Mar 3 2016, 09:29:07)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> sys.maxunicode
1114111
>>> s = ''
>>> ord(s)
128556
>>> len(s)
1