如何选择代理区(UTF-16)的位置?

sid*_*com 10 unicode utf-16

UTF-16代理区域(U + D800..U + DFFF)的位置是随机选择还是有一些逻辑上的原因,它是在这个地方?

Ano*_*mie 6

代理区域在Unicode 2.0中添加,以扩展代码超过65536个代码点,同时保持与现有16位表示的兼容性.为了对表示1048576个新代码点所需的20位进行编码,它们用1024个字符表示前10位,1024用来表示后10位(它们使用2048个字符而不是1024个以允许代码自同步) .为了有效识别字符,最好是所有2048共享一个(二进制)前缀.

我只能猜测他们想把这个异常目的的块推到更高而不是更低的代码点.块0xE000-0xE7FF,0xE800-0xEFFF和0xF000-0xF7FF已经为"私有使用"区域保留,0xF800-0xFFFF也部分保留供私人使用,部分用于其他代码.因此,0xD800-0xDFFF将是可用的最高块.

  • 他们这样做的方式是将BMP整齐划分为"普通"字符U + 0000 - U + D7FF和"特殊"字符(代理,私用,兼容字符和非字符)U + D800 - U + FFFF. (2认同)