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编码的一部分。