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代码点?
答案 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