unicode - Unicode 中的 "noncharacter"是什么?

标签 unicode noncharacter

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

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

最佳答案

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

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

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

关于unicode - Unicode 中的 "noncharacter"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66861437/

相关文章:

swift - 如何显示彩色表情符号

unicode - 是否可以使用unicode组合字符来组合任意字符?

html - Unicode 字符对齐

unicode - 非常好,不好 UTF-8 示例测试数据

unicode - 非字符 U+FDD0 到 U+FDEF 的用途是什么?

swift - 哪些 unicode 代码可以安全地用作保留值?

javascript - 你能帮我理解 sort() 在 Javascript 中是如何工作的吗?

Java Windows UTF-8 (unicode) 打印