从我的Java文档读取字符,即
从U + 0000到U + FFFF的字符集有时被称为基本多语言平面(BMP)
但我尝试了下面的代码,发现有2492 int未定义!有什么不对的吗?或者我有一些误解?谢谢!
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);
}
Run Code Online (Sandbox Code Playgroud)
输出:
2492
的文档指出,如果字符在isDefined()UnicodeData 文件中具有条目或位于某个范围内,则该字符“已定义” 。这标识了已分配给字符的代码点集(并且可能更好地命名为isAssigned())。正如您所发现的,基本多语言平面中的所有代码点尚未分配给字符(此地图显示了一些空白的位置)。
但是,即使代码点尚未分配(即isDefined())false,它也可能在 Unicode 的未来版本中分配,并且仍然是有效的代码点。编码/解码和使用未分配的代码点是完全有效的(尽管有点奇怪)。