UCS-2如何显示在UTF-8中占用6个字节的unicode码点?

Ken*_*ell 1 unicode ucs2 utf-8

我正在http://www.joelonsoftware.com/articles/Unicode.html上阅读有关Unicode的信息。乔尔说,UCS-2将所有Unicode字符编码为2个字节,而UTF-8最多可能需要6个字节才能对某些Unicode字符进行编码。您能举例说明一下,如何在UCS-2中编码6字节UTF-8编码的Unicode字符吗?

Rem*_*eau 5

UCS-2是在Unicode的代码点少于65536个时创建的,因此它们最多可容纳2个字节。一旦Unicode增长到超过65536个代码点,UCS-2便过时了,并被UTF-16取代,后者通过代理对使用2个字节对​​所有UCS-2兼容的代码点进行编码,其余使用4个字节进行编码。

UTF-8最初是为了对最多6个字节(U + 7FFFFFFF最大)的代码点进行编码而编写的,但后来被限制为4个字节(U + 1FFFFF最大,但禁止U + 10FFFF以上的任何东西),因此它与UTF 100%兼容来回-16,并且不对UTF-16不支持的任何代码点进行编码。UTF-8和UTF-16都支持的最大代码点是U + 10FFFF。

因此,为回答您的问题,需要5字节或6字节UTF-8序列(U + 200000至U + 7FFFFFFF)的代码点不能用UCS-2甚至UTF-16编码。没有足够的位数来保存如此大的代码点值。