从UTF-16's 维基百科条目,第二句说它是可变长度的编码.
但是16位字符和32位编码之间的分隔符在哪里?我知道很多字符可以存储在16位字符中,所以人们可以这样优化UTF-6,但我仍然很好奇,因为总有一天我们会超过16位标记。
别担心,我知道UTF-8是标准的。我只是好奇。
发布于 2015-06-17 18:30:30
这听起来像是你在要求允许UTF-16表示32位字符的机制,这就是代理对。维基百科的那篇文章对此作了详尽的解释。
顺便说一句,我们很久以前就超过了16位。事实上,UTF-16被广泛使用的主要原因是,当人们认为16位就足够时,固定长度的UCS-2编码就变得流行起来,所以UTF-16是每个开始使用UCS-2的人都很容易使用的端口选项。
发布于 2015-06-17 19:40:40
这是一个非常类似的原则,UTF-8。在UTF-8中,您可以查看单个字节,它要么是“单字节代码点”、“两个字节中的第一个”、“三个字节中的第一个”、“四个字节中的第一个”,要么是“两个、三个或四个字节代码点的延续”。
在UTF-16中,您可以查看单个16位值,它要么是“单个16位字代码点”,要么是“两个半程中的第一个”,或者是“第二个一半中的第二个”:D800到DBFF的代码是“前半部分”,DC00到DCFF的代码是“第二部分”,为了得到一个32位的代码点,您可以将其中的最后十位进行组合,得到一个20位的值,并添加0x10000。
https://softwareengineering.stackexchange.com/questions/287109
复制相似问题