标识Unicode字符的各种数字之间的转换

标识Unicode字符的各种数字之间的转换,unicode,Unicode,Unicode字符可以通过以下方式识别 例如,“带医用面具的脸”表情符号可以通过描述符U+1F637或U+E40C识别 我假设这些描述符在完整的Unicode字符表中标识字符的索引:但是为什么有两个呢 在UTF-16中,此Unicode代码点可以表示为四个字节,形成两个16位代码单元(我认为): console.log('\uD83D\uDE37')//以Unicode格式打印字符“带医用面罩的脸”专用区域 你问: 但是为什么有两个呢 没有两个。有一个正式指定的字符(U+1F637),另一个(

Unicode字符可以通过以下方式识别

例如,“带医用面具的脸”表情符号可以通过描述符
U+1F637
U+E40C
识别

我假设这些描述符在完整的Unicode字符表中标识字符的索引:但是为什么有两个呢

在UTF-16中,此Unicode代码点可以表示为四个字节,形成两个16位代码单元(我认为):

console.log('\uD83D\uDE37')//以Unicode格式打印字符“带医用面罩的脸”专用区域
你问:

但是为什么有两个呢

没有两个。有一个正式指定的字符(
U+1F637
),另一个(
U+E40C
)是一个“私人使用”号码,任何人都可以非正式地分配给任何字符

Unicode代码点使用的范围超过一百万个数字

  • 其中只有十分之一,超过113000人被正式指定为特定角色
  • 广泛的范围是保留的。就像自然保护区为了永远不会开发而将财产放在一边一样,这些私人数字范围永远不会被正式分配给角色
  • 其余的一百万个数字只是没有分配,等待着有一天被官方分配一个字符
私人区域中的数字可供任何同意其语义的各方使用。任何人都可以将他们想要的任何字符分配给私人范围内的任何数字。在达成自己的私人协议后,这些协议方可以使用这些代码点安全地交换数据,因为它们知道,未来的软件不会突然将它们重新解释为官方字符

为什么会有人这样做?双方可能是研究和记录Unicode联盟尚未承认的一些模糊语言的学者。或者他们可能是一种虚构语言的粉丝,这种语言不符合Unicode中官方包含的要求。或者,他们可能是想非官方地发明一种新技术的人。在所有这些情况下,使用私有区域的各方需要为其非官方字符实现一种带有字形的字体

Unicode联盟之外的一些人已经协调努力,将Unicode未涵盖的字符公开分配给私人使用区域内的不同范围。他们可能会发布一个注册表,让其他人知道。但这样的任务当然不是官方的,合规性是可选的

您的编号
U+E40C
(十进制58380)来自私人使用区域编号范围。在古代,这个角色可能被很多人用作面具表情符号。但Unicode联盟从未正式分配过这个数字。它也永远不会被分配,因为它只供私人使用


U+1F637
=
带医用口罩的脸
=U+E40C属于“私人使用区域”,Unicode没有为其定义标志符号。在U+1F637可用之前,您必须执行的操作。谢谢。那是角色的临时位置?有点像。您不能期望它在不同的操作系统上正确显示。不要用它。
D83D followed by DE37