什么是Python 3.x中的字符串的内部表示

在Python 3.x中,一个字符串由Unicode序数组成。 (参见下面的语言参考报价。)Unicode字符串的内部表示是什么?是UTF-16吗?

The items of a string object are
Unicode code units. A Unicode code
unit is represented by a string object
of one item and can hold either a
16-bit or 32-bit value representing a
Unicode ordinal (the maximum value for
the ordinal is given in
sys.maxunicode, and depends on how
Python is configured at compile time).
Surrogate pairs may be present in the
Unicode object, and will be reported
as two separate items.

Python 2.X和3.X之间的Unicode内部表示方式没有变化。

这绝对不是UTF-16。 UTF-任何东西都是一个面向字节的EXTERNAL表示。

每个代码单元(字符,代理等)已经从范围(0,2 ** 21)分配了一个数字。这被称为它的“序数”。

真的,你所引用的文件说了这一切。大多数Python二进制文件使用16位序数,这将限制您使用基本的多语言平面(“BMP”),除非您想要使用代理程序(如果您找不到您的头发衬衫,而且您的指甲床不在,生锈)。对于使用完整的Unicode节目,您更喜欢“宽版本”(32位宽)。

简单来说,unicode对象中的内部表示是16位无符号整数的数组,或32位无符号整数的数组(仅使用21位)。

翻译自:https://stackoverflow.com/questions/1838170/what-is-internal-representation-of-string-in-python-3-x

转载注明原文:什么是Python 3.x中的字符串的内部表示