当我在Unicode上阅读此Python2's official page时,它说
在幕后,Python将Unicode字符串表示为16位或32位整数,具体取决于Python解释器的编译方式。
上述句子是什么意思?这是否意味着Python2有自己的Unicode特殊编码?如果是这样,为什么不使用UTF-8?
答案 0 :(得分:4)
此语句仅表示存在使用这两种编码的基础C代码,并且根据具体情况,选择任一变体。这些情况通常是用户选择,编译器和操作系统。
现在,对于可能的理由,有理由不使用UTF-8:
wchar_t
实际上是一个16位类型,所以如果你想使用32位类型,你必须为你自己发明的字符类型重新实现各种函数。删除对Unicode BMP之上的任何内容的支持或将代理序列泄漏到Python API中是一个合理的折衷方案(但不幸的是这样做)。请注意,这些是可能的原因,我并不认为这些适用于Python的实现。