我阅读了 Character 的 Java 文档, 那
The set of characters from U+0000 to U+FFFF is sometimes referred to as the Basic Multilingual Plane (BMP)
但是我试了下面的代码,发现还有2492 int is not defined!有什么问题吗?还是我有什么误会?谢谢!
public static void main( String[] args )
{
int count=0;
for(int i = 0x0000; i<0xFFFF;i++)
{
if(!Character.isDefined(i))
{
count++;
}
}
System.out.println(count);
}
输出:
2492
最佳答案
documentation for isDefined()
表示如果字符具有条目或在 UnicodeData file 的范围内,则该字符“已定义” .这标识了已分配 给字符的一组代码点(将其命名为 isAssigned()
可能更好)。正如您所发现的,Basic Multilingual Plane 中的所有代码点尚未分配给字符(this map 显示了一些空格所在的位置)。
但是,即使代码点尚未分配(即 isDefined()
为 false
),它也可能在未来版本的 Unicode 中分配,并且仍然是一个有效的代码点。编码/解码和使用未分配的代码点是完全有效的(尽管有点奇怪)。
关于java - 为什么从 0x0000 到 0xFFFF 的一些 int 不是定义的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242270/