Python 3中的Unicode字符
指的是什么?
自Python 3.0版本起,该语言提供了一个str类型,其包含Unicode字符,这意味着使用“unicode rocks!”,'unicode rocks!'或三引号语法创建的任何字符串都以Unicode形式存储。
以上为Python文档内容。
对于字符串abc
,Python是否在内存中保存了[61, 62, 63]? (因为a
是U+0061)
Unicode字符是否表示Unicode码点?
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
因此,超出此范围的字符必须表示为代理对:
>>> 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
text[index]
是否保证返回一个码点,还是可能返回代理对的一半。 - Konrad Rudolph