【发布时间】:2011-03-03 08:21:32
【问题描述】:
UTF-16 代理区域 (U+D800..U+DFFF) 的位置是随机选择的还是有某种逻辑原因,它就在这个地方?
【问题讨论】:
UTF-16 代理区域 (U+D800..U+DFFF) 的位置是随机选择的还是有某种逻辑原因,它就在这个地方?
【问题讨论】:
在 Unicode 2.0 中添加了代理区域,以将代码扩展到 65536 个代码点之外,同时保持与现有 16 位表示的兼容性。为了对表示 1048576 个新代码点所必需的 20 位进行编码,他们用 1024 个字符来表示前 10 位,用 1024 来表示后 10 位(他们使用 2048 个字符而不是 1024 个字符来允许代码自同步) .为了提高识别字符的效率,最好是所有 2048 共享一个(二进制)前缀。
我只能猜测他们想将这个特殊用途的块推到更高而不是更低的代码点。块 0xE000–0xE7FF、0xE800–0xEFFF 和 0xF000–0xF7FF 已经为“私人使用”区域保留,0xF800–0xFFFF 也部分保留供私人使用,部分用于其他代码。所以 0xD800–0xDFFF 将是可用的最高块。
【讨论】:
Unicode 最初设计为 16 位代码,在认识到需要“补充平面”之前已经分配了a bunch of characters。最大的可用块是 U+A000 – U+DFFF,所以代理必须去那里的某个地方。
【讨论】: