1

我一直在阅读有关 python Unicode 编码等的大量内容,我认为现在对它有了一些了解。最后一件事仍然存在。

这是我的理解

在 python 2.x 中,str 对象将字符串表示为字节,根据这些字节的编码,我们可以获得不同的字符。这是我知道的简化,但对于这个问题并不重要。

然而,我被告知 unicode 对象将字符串表示为 unicode 代码点,因此基本上是整数。不再像我们以前那样将字节解释为它们的值。

我的问题是这些 Unicode 代码点/整数在 python 的底层是如何表示的,无论如何它们只是 4 字节数字。这是否意味着他们使用的空间比他们的 str 对手多得多。不是我担心空间,我只是想了解。

4

1 回答 1

3

在 3.3 之前的 CPython 中,unicode对象中的文本数据被编码为 UCS-2 或 UCS-4(取决于编译时选项)并存储在char*. 3.3根据字符串中的最高代码点对数据使用可变表示。unicodeJython 和 IronPython 使用它们的本机类型进行unicode存储。

于 2013-08-20T12:04:08.347 回答