为什么按照PEP 100中的描述实现Python Unicode内部格式?

为什么按照PEP 100中的描述实现Python Unicode内部格式?,python,unicode,encoding,utf-16,ucs2,Python,Unicode,Encoding,Utf 16,Ucs2,PEP 100声明内部格式Python Unicode包含UTF-16编码,但将值作为UCS-2(或UCS-4,当使用标志--enable Unicode=ucs4编译时) 为什么没有选择UTF-16(可变长度格式)而不是UCS-2(固定长度) 虽然这两种编码基本相同,但当PEP-100出版时(2000年3月),UTF-16已经有4年的历史了。Python Unicode是为了解决向后兼容性问题吗 我真的很好奇为什么Python的内部格式是使用这种(似乎)混合方法来实现的,以在内部存储编码数据

PEP 100声明内部格式Python Unicode包含UTF-16编码,但将值作为UCS-2(或UCS-4,当使用标志
--enable Unicode=ucs4
编译时)

为什么没有选择UTF-16(可变长度格式)而不是UCS-2(固定长度)

虽然这两种编码基本相同,但当PEP-100出版时(2000年3月),UTF-16已经有4年的历史了。Python Unicode是为了解决向后兼容性问题吗

我真的很好奇为什么Python的内部格式是使用这种(似乎)混合方法来实现的,以在内部存储编码数据


问我的问题更好的方式可能是:是否有人引用过官方文件中的引文或链接,其中明确说明了为什么PEP 100选择将UTF-16视为UCS-2而不是使用UTF-16?

请进一步阅读:“对于所有当前定义的Unicode字符点,UCS-2和UTF-16都是相同的”。。。在2000年,政治公众人物被写出来的时候也是这样。最初的实现只涉及BMP(前64K代码点)。

更好的是,为什么不使用UTF-8或UTF-32?我也希望看到UTF-8,但我猜UTF-8在RFC 2279直到1998年1月才发布的时候可能有点太前沿了。我对UTF-32了解不多,但我怀疑它不是为了解决存储问题而选择的。很好的注释:)注意:使用UTF-8比UTF-16在长度、索引和切片方面处理字符要困难得多,效率也低得多。使用UTF-8作为内部格式(与外部格式相反)不是一个好主意。@eryksun没有。我在问为什么选择UCS-2而不是UTF-16。虽然我很想了解更多关于“为什么没有正确地编写UTF-16代理项对”@JohnMachin为什么UTF-8“在长度、索引和切片方面使用UTF-8更加困难和低效”?我阅读了这篇文章,并了解到它们在代码点方面基本相同,但是,如果在编写本文时所有代码点的UCS-2都相同,为什么要选择较旧的UCS-2而不是较新的UTF-16呢?固定长度格式比可变长度格式有什么优势?固定宽度更容易处理。而且,Unicode现在和过去都是一个移动的目标。采用已经存在了几年的unicode特性是有意义的。@tchrist我在这里的目的不是讨论或批评实现的优点。我同意你的前两句话以及你关于代理的其他陈述,但是你对Java和Python的攻击对回答我的问题没有任何帮助。你评论中的消极也会影响到你所说的事实可能是真实的事情的可信度。太糟糕了。@JohnMachin谢谢你的提示。我会看一看,看我是否能带回任何有用的信息添加到这里。@tchrist:可能是被一个糟糕的程序员烧坏了,他用Python和/或Java错误地处理XML。Python和Java都可以并且确实处理BMP之外的所有代码点。许多Linux系统都配备了准备好这样做的Python。我已经在MacOSX上编译了Python来处理BMP之外的代码点。请停止拖拉。