Unicode 哪些非负整数是';是否在UCS中分配了一个字符?

Unicode 哪些非负整数是';是否在UCS中分配了一个字符?,unicode,ucs,noncharacter,Unicode,Ucs,Noncharacter,由定义的编码字符集将字符映射为非负整数(例如,拉丁小写字母A到97,通过传统ASCII和UCS) 注意:字符和抽象字符之间有区别:后一个术语更接近于我们的字符概念,而第一个术语是编码字符集上下文中的概念。某些抽象字符由多个字符表示。举出一个例子: 例如,一个拉丁文小写字母“i”,带有一个ogonek,上面有一个点,以及 一种尖锐的重音[抽象的字符],这在语言中是必需的 立陶宛语,由字符序列U+012F、U+0307表示, U+0301 UCS(通用编码字符集)是由国际标准ISO/IEC 1064

由定义的编码字符集将字符映射为非负整数(例如,拉丁小写字母A到97,通过传统ASCII和UCS)

注意:字符和抽象字符之间有区别:后一个术语更接近于我们的字符概念,而第一个术语是编码字符集上下文中的概念。某些抽象字符由多个字符表示。举出一个例子:

例如,一个拉丁文小写字母“i”,带有一个ogonek,上面有一个点,以及 一种尖锐的重音[抽象的字符],这在语言中是必需的 立陶宛语,由字符序列U+012F、U+0307表示, U+0301

UCS(通用编码字符集)是由国际标准ISO/IEC 10646定义的编码字符集,作为参考,可通过下载

手头的任务是判断给定的非负整数是否被映射到字符

让我们首先考虑那些没有被赋予字符的非负整数,即使它们实际上是由UCS保留的。UCS(§6.3.1,分类,表1;链接文件第19页)根据对应的基本类型列出了三种可能性:

  • 代理(范围D800–DFFF)
  • 非字符(范围FDD0–FDEF加上以值FFFE或FFFF结尾的任何代码点)

    Unicode标准对非字符的定义如下:

    非字符是永久保留的代码点,将 永远不要为它们指定字符

    更精确地列出非字符

  • 保留(我没有找到属于这一类的非负整数)
另一方面,基本类型为以下任一类型的代码点:

  • 图形
  • 格式
  • 控制
  • 私用
被分配给字符。然而,这是可以讨论的。例如,是否应将私用代码点视为实际分配了任何字符?UCS(§6.3.5,专用字符;链接文档第20页)将其定义为:

私用字符不受此限制 国际标准。可以使用专用字符来提供 用户定义的字符

此外,我想知道UCS映射或保留的非负整数的范围。最大值是多少?在一些页面中,我发现UCS映射的整个非负整数范围可能是–0–0x10FFFF。这是真的吗

理想情况下,这些信息将以机器可读的格式公开提供,人们可以在此基础上构建算法。是偶然的吗



为了清楚起见:我需要一个函数,它接受一个非负整数作为参数,并返回它是否由UCS映射到一个字符。此外,我更希望它基于官方的、机器可读的信息。为了回答这个问题,只要指出一个我可以自己构建函数的资源就足够了。

Unicode字符数据库(UCD)位于Unicode.org网站上;它当然是机器可读的。它包含所有指定字符的列表。(当然,随着Unicode的每一个新版本,分配的代码点集都会更大。)组成UCD的各种文件的完整文档也会从UCD页面链接


正如您所怀疑的,潜在代码的范围为0-0x10FFFF。其中,非字符和代理块永远不会被指定为任何字符的码点。私人使用区域的代码只能通过应用程序之间的相互协议分配给字符;它们永远不会由Unicode本身分配给字符。任何其他代码都可能是。

Unicode字符数据库(UCD)位于Unicode.org网站上;它当然是机器可读的。它包含所有指定字符的列表。(当然,随着Unicode的每一个新版本,分配的代码点集都会更大。)组成UCD的各种文件的完整文档也会从UCD页面链接


正如您所怀疑的,潜在代码的范围为0-0x10FFFF。其中,非字符和代理块永远不会被指定为任何字符的码点。私人使用区域的代码只能通过应用程序之间的相互协议分配给字符;它们永远不会由Unicode本身分配给字符。任何其他代码都可能是。

谢谢,这正是我需要的。我觉得自己很傻,因为在这么多的搜索中没有找到它……谢谢,这正是我所需要的。我觉得自己很傻,因为在这么多的搜索中都没有找到它…