日期:2014-05-20  浏览次数:20759 次

Unicode字符问题
import   java.util.*;

public   class   CharTest
{  
public   static   void   main(String[]   args)
{  
String   sentence   =   "\u1D56B   is   the   set   of   integers ";
System.out.println(sentence);
for(int   i   =   0;   i   <   sentence.length();   ++i)
{
int   cp   =   sentence.codePointAt(i);
if(Character.isSupplementaryCodePoint(cp))
{
System.out.println( "!!! ");
++i;
}
System.out.println(cp);
}
}
}

这是Core   Java   7th   Edition   中关于Unicode字符的一段代码,为什么在1.5.0_10中编译运行的结果是

?B   is   the   set   of   integers
7510
66
32
105
115
32
116
104
101
32
115
101
116
32
111
102
32
105
110
116
101
103
101
114
115

也就是并未将\u1D56B识别为一个Unicode字符,而是分成了两个\u1D56   和   B   ?谢谢!

------解决方案--------------------
Java的Unicode只认两个字节,也就是4个16进制
所以\uXXXX,只能是4个X,第5个不会当成Unicode编码的一部分。