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

dan*_*n04 46 unicode

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

U + FFFF在"Unicode标准 "中描述为"对于作为哨兵的内部用途有用".说得通.

但我无法弄清楚,并且Unicode标准没有真正解释为什么非字符集包含"阿拉伯语演示文稿-A"中的一些随机块.这些是为了什么?(除了蛇怪的眼睛?)

Ben*_*Ben 43

好的问题是"他们是为了什么"和"为什么他们在阿拉伯语演示文稿的中间".

因此,人们一致认为,这些从未被用过的代码点将被指定为非字符,因此它们可以由应用程序/程序员在内部使用.

  • @Raedwald,FFF9 到 FFFF 已经被用于其他目的。http://www.unicode.org/charts/PDF/UFFF0.pdf (3认同)

Zim*_*bao 15

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

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

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

所以总数

 17*2 + 32 = 66
Run Code Online (Sandbox Code Playgroud)

阅读unicode第16章中的以下文字,该文章说由于"历史原因",它在一些随机的地方,我很好奇,但我认为没有任何含糊之处.

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

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

在Unicode 部分3.2条款C2中

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

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

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

第16.7节

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

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

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


Jos*_*rns 9

正如xkcd中所提到的,U+FDD0实际上是蛇怪眼睛的Unicode字符.然而,对于(显而易见的)人身安全的原因,角色不会呈现在屏幕上...... :)

  • 错误!它是"蛇怪之眼"的永久占位符,并且因(明显的)历史原因而被选中. (4认同)