1

在 Java 标准库中,Character.getName(0x2000A)返回"CJK UNIFIED IDEOGRAPHS EXTENSION B 2000A"(在 java 11、16 和 17 中,使用 unicode 版本 10 和 unicode 版本 13),而我期望"CJK UNIFIED IDEOGRAPHS-2000A"

结果让我感到惊讶,因为代码点是带有 name 的字符组的一部分"CJK UNIFIED IDEOGRAPHS-#",并且这些块通常从组名中派生出它们的名称,其中 # 替换为代码点编号。例如,u+FA21返回 name的 codepoint 就是这种情况"CJK COMPATIBILITY IDEOGRAPH-FA21"

此规则在Unicode® Standard Annex #42 第 4.4.2 段中进行了解释

如果代码点具有属性 na(直接或通过从封闭组继承),则名称中出现的字符 # 将被解释为代码点的值。

似乎字符是通过 JDK 的“类别规则”命名的,其中字符的名称是通过以大写的代码点块的名称给出的,并附加代码点。

为什么jdk返回代码点的块名称u+2000A处理它明显不同于u+FA21

4

0 回答 0