python2如何在内部表示Unicode?

2024-06-02 10:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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呢?你知道吗


Tags: ortheintegersaspageunicodebiteither
1条回答
网友
1楼 · 发布于 2024-06-02 10:24:18

这个语句仅仅意味着有一个使用这两种编码的底层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以上任何内容的支持,或者将代理序列泄漏到pythonapi中,都是一个合理的折衷方案(但不幸的是,这种折衷方案仍然存在)。你知道吗

注意,这些都是可能的原因,我并不认为这些适用于Python的实现。你知道吗

相关问题 更多 >