java采用UNICODE来表示字符,究竟是怎么表示的呢?其实就是int类型与char的对应关系。char强制转化为int的数值,再转换为16进制,就是UNICODE中的代码点,如下代码:
char c = '一';
System.out.println((int)c);
System.out.println(Integer.toHexString(c));
输出结果为:
19968
4e00
以上2个数值,就是这个字符在UNICODE码表中的位置,也就是代码点(code point),是一个抽象的概念,和具体的字符集无关。在java中,char是用2个字节表示的,所以,最多只能支持65536个字符。事实上,UNICODE支持的字符数要大于65536,为此,java中采用了拼2个char的方式,来表示超出65536范围的字符(就是java中提到的增补字符)。具体,可以参考Character相关的javadoc文档。
同样,可以根据一个UNICODE代码点(int数值),来输出对应的UNICODE字符,如下代码:
for (int i=0;i<256;i++) {
System.out.println((char)i);
}
输出的不可打印字符,用表示了。
ASCII码表及ISO-8859-1中,字符的HTML Entity Code数值都是采用代码点的10进制表示的。
UNICODE官方网址:http://www.unicode.org
待完善...
char c = '一';
System.out.println((int)c);
System.out.println(Integer.toHexString(c));
输出结果为:
19968
4e00
以上2个数值,就是这个字符在UNICODE码表中的位置,也就是代码点(code point),是一个抽象的概念,和具体的字符集无关。在java中,char是用2个字节表示的,所以,最多只能支持65536个字符。事实上,UNICODE支持的字符数要大于65536,为此,java中采用了拼2个char的方式,来表示超出65536范围的字符(就是java中提到的增补字符)。具体,可以参考Character相关的javadoc文档。
同样,可以根据一个UNICODE代码点(int数值),来输出对应的UNICODE字符,如下代码:
for (int i=0;i<256;i++) {
System.out.println((char)i);
}
输出的不可打印字符,用表示了。
ASCII码表及ISO-8859-1中,字符的HTML Entity Code数值都是采用代码点的10进制表示的。
UNICODE官方网址:http://www.unicode.org
待完善...