非字符U + FDD0到U + FDEF的目的是什么?

时间:2011-03-04 01:27:28

标签: unicode

U + FFFE必须是非字符才能使字节顺序标记起作用。

U + FFFF在The Unicode Standard中被描述为“对于作为哨兵的内部目的有用”。有道理。

但我无法弄清楚,而且Unicode标准并没有真正解释为什么非字符集包含“阿拉伯语演示文稿-A”中的一些随机块。这些对于是什么? (除了the eye of the basilisk?)

3 个答案:

答案 0 :(得分:40)

好的问题是“他们是为了什么”和“为什么他们在阿拉伯语演示表格的中间”。

因此,我们同意这些从未被用过的代码点将被指定为非字符,因此它们可以由应用程序/程序员在内部使用。

答案 1 :(得分:14)

这些非字符供应用程序内部使用,不应互换。

我尝试根据Unicode标准中的说法进行解释。

Unicode有66个非字符。对于所有17个平面,它们各有两个,最后两个代码点以FFFE FFFF结尾。 32个其他无字符是连续块U + FDD0到U + FDEF。

总计数

 17*2 + 32 = 66

阅读unicode第16章中的以下文字,该文章说由于“历史原因”它在某个随机位置,我很好奇,但我不认为有任何含糊之处。

  

由于历史原因,范围U + FDD0..U + FDEF包含在阿拉伯语Presentation Forms-A块中,但这些非字符不是   “阿拉伯语非字符”或“从右到左的非字符”,并且没有任何区别   与其他非字符的其他方式,除了代码点值

U+FEFF是BOM,U+FFFE是字节交换版本。但由于U+FFFE是非字符,当解释过程发现U + FFFE作为第一个字符时,它表示进程遇到了错误字节顺序的文本或文件不是有效的Unicode文本,它只是给出一个信号,而不是标准的方式。它可以是一个,反向字节或错误的文本。

在Unicode section 3.2子句中, C2 表示

  

C2进程不得将非字符代码点解释为抽象字符。

     
      
  • 非字符代码点可以在内部使用,例如用于标记值或分隔符,但不应公开交换。
  •   

因此,作为应用程序开发人员,您可以随意使用这些字符。它们用作哨兵或分隔符,或者可能是一些baslik字符,但它们不应互换。

Section 16.7

  

实际上,非字符可以被认为是应用程序内部的私有代码点。   与第16.5节“私有使用字符”中讨论的私有字符不同   分配字符,用于开放式交换,受制于   私人协议解释,非人格永久保留(未分配)   并且在他们可能的应用程序之外没有任何解释 - 内部私人用途

同样,U + FFFF不是由Unicode标准保留为sentinel,而是仅仅给出了典型的用例。请阅读section 16.7

  

U + FFFF和U + 10FFFF。这两个非特征代码点具有存在的属性   与特定Unicode编码形式的最大代码单元值相关联。在   UTF-16,U + FFFF与最大的16位代码单元值FFFF 16 相关联   U + 10FFFF与最大的合法UTF-32 32位代码单元值相关联,10FFFF 16   此属性将这两个非字符代码点用作内部目的作为标记。对于   例如,它们可能用于指示列表的结尾,以表示索引中的值   保证高于任何有效的字符值,依此类推

答案 2 :(得分:9)

如上所述here at xkcdU+FDD0实际上是蛇怪眼中的Unicode字符。然而,对于(明显的)人身安全的原因,角色不会呈现在屏幕上......:)