81
4

4 回答 4

133

字符 “U+” 是 MULTISET UNION “⊎” U+228E 字符(内部带有加号的 U 类联合符号)的 ASCII 化版本,旨在将 Unicode 表示为字符集的联合。请参阅Unicode 邮件列表中 Kenneth Whistler 的解释

于 2012-01-17T07:39:31.610 回答
16

Unicode 标准需要一些符号来讨论代码点和字符名称。它采用了“U+”后跟四个或更多十六进制数字的约定,至少早在 1996 年出版的 Unicode 标准版本 2.0.0(来源:Unicode 联盟网站上的存档 PDF 副本)。

“U+”符号很有用。它提供了一种将十六进制数字标记为 Unicode 代码点的方法,而不是八位字节、无限制的 16 位数量或其他编码中的字符。它在运行文本时效果很好。“U”表示“Unicode”。

我个人对 1990 年代早期关于 Unicode 的软件行业讨论的回忆是,在 Unicode 1.0 和 Unicode 2.0 时代,“U+”后跟四个十六进制数字的约定很常见。当时,Unicode 被视为 16 位系统。随着 Unicode 3.0 的出现和 U+010000 及以上代码点的字符编码,“U-”后跟六个十六进制数字的约定开始使用,特别是为了突出数字中额外的两位数字。(或者可能是相反的,从“U-”到“U+”的转变。)根据我的经验,“U+”约定现在比“U-”约定更普遍,很少有人使用“U+”和“U-”的区别来表示位数。

不过,我无法找到从“U+”到“U-”转变的文档。1990 年代存档的邮件列表消息应该有证据,但我不能方便地指出任何证据。Unicode 标准 2.0声明“ Unicode 字符代码具有 16 位的统一宽度”。(第 2-3 页)。它规定了“单个 Unicode 值表示为U+nnnn,其中nnnn是十六进制表示法的四位数字”(第 1-5 页)的约定。分配了代理值,但没有定义高于 U+FFFF 的字符代码,也没有提到 UTF-16 或 UTF-32。它使用带有四位数字的“U+”。Unicode 标准 3.0.0,于 2000 年出版,定义了 UTF-16(第 46-47 页)并讨论了 U+010000 及以上的代码点。它使用“U+”,在某些地方使用四位数字,在其他地方使用六位数字。我发现的最牢固的痕迹是在The Unicode Standard , version 6.0.0中,其中 BNF 语法符号表定义了符号U+HHHHU-HHHHHHHH(p. 559)。

“U+”符号并不是表示 Unicode 代码点或代码单元的唯一约定。例如,Python 语言定义了以下字符串文字

  • u'xyz'表示一个 Unicode 字符串,一个 Unicode 字符序列
  • '\uxxxx'用四个十六进制数字表示的带有 unicode 字符的字符串
  • '\Uxxxxxxxx'用八个十六进制数字表示的带有 unicode 字符的字符串
于 2012-01-17T08:01:46.223 回答
8

这取决于您所谈论的 Unicode 标准的版本。来自维基百科

旧版本的标准使用类似的符号,但规则略有不同。例如,Unicode 3.0 使用“U-”后跟八位数字,并允许“U+”仅与正好四位数字一起使用来表示代码单元,而不是代码点。

于 2009-08-13T18:19:28.660 回答
4

显示该值是 Unicode 只是一个约定。有点像十六进制值(0xB9B9h)的“0x”或“h”。为什么0xB9而不是0hB9(或&hB9$B9)?只是因为这就是硬币翻转的方式:-)

于 2011-05-28T09:57:11.823 回答