3

我不知道什么是“非字符”字符。它们是禁止的 unicode 字符,但我可以复制和粘贴它们,例如 U+FFFF ()。如果一个字符在 Unicode 中有一个固定的位置,并且可以用来显示一些东西,那么:

  1. 为什么这些字符是“非字符”?
  2. 将它们归类为非字符有什么意义,因为它们在表格上占有一席之地并且可以在 HTML 和 CSS 中显示(尽管作为替换字符),甚至?
  3. 在 Unicode 中有这么多空格有什么意义,比如在“特价”(FFF0-FFFF)块中?
4

1 回答 1

2

Specials 块不是空的。分配了该块中的几个元素。最著名(也是最重要的),替换字符(U+FFFD)就在那个块中。虽然它在技术上不是字符,或者在 Specials 块中,但非常重要的序列“FFFE”(小端 BOM)可以出现在文件的开头,因此 U+FFFE 不是合法字符很有用。(相关的 U+FEFF 在技术上是一个字符,但不推荐将其用作字符。)如果需要新的“特殊”,仍然有几个插槽可供它们使用,同时保持在该块内。

Unicode 更喜欢将相似的东西组合成具有方便的二次幂大小的块,因此在当前未分配的各种块的末尾会有一些剩余值。Unicode 总空间超过一百万个代码点。已分配不到 300k,因此有很大的空间可以保持整洁。

官方的非字符(每个平面的 xFFFE 和 xFFFF,加上 FDDO-FDEF)为您知道永远不会是字符的字节序列的“特殊用途”留出了空间。BOM 是这些用途中最著名的,但如果需要,实现可以将它们用于其他目的。总而言之,一百万个代码点中有 66 个,因此提供一些未来的灵活性并不是很大的成本。

于 2021-03-29T21:12:51.353 回答