gpt4 book ai didi

python - Python 2 如何在内部表示 Unicode?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:56 25 4
gpt4 key购买 nike

当我读到这个Python2's official page在 Unicode 上,它说

Under the hood, Python represents Unicode strings as either 16-or 32-bit integers, depending on how the Python interpreter was compiled.

上面这句话是什么意思?这是否意味着 Python2 有自己的特殊 Unicode 编码?如果是这样,为什么不直接使用 UTF-8?

最佳答案

此声明仅表示存在使用这两种编码的底层 C 代码,并且根据情况选择任一变体。这些情况通常是用户选择、编译器和操作系统。

现在,对于可能的理由,有理由不使用 UTF-8:

  • 首先,索引 UTF-8 字符串的复杂度为 O(n),而 UTF-32/UCS4 为 O(1)。虽然这与流数据无关,而且 UTF-8 实际上可以节省传输或存储空间,但内存中处理更方便,每个 Unicode 代码点一个字符。
  • 其次,每个代码点使用一个字符可以很好地转换为 Python 本身以其语言提供的 API,因此这是一个自然的选择。
  • 在 MS Windows 平台上,UI 和文件系统的原生编码为 UTF-16,因此使用该编码可实现与该平台的无缝集成。
  • 在一些编译器上 wchar_t 实际上是一个 16 位类型,所以如果你想在那里使用 32 位类型,你必须为你自己发明的字符类型重新实现各种函数.放弃对 Unicode BMP 之上的任何内容的支持或将代理序列泄漏到 Python API 中是一种合理的折衷方案(但不幸的是,它仍然存在)。

请注意,这些是可能的原因,我并不声称这些适用于 Python 的实现。

关于python - Python 2 如何在内部表示 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com