java中 unicode编码问题
char ch = '我';
System.out.println(ch+" "+ch.SIZE+" "+String.valueOf(ch).getBytes("UNICODE").length+" UNICODE");
结果:我 16 4 UNICODE
.java 文件用的是UTF-8编码,UTF-8是Unicode的其中一个使用方式,
查资料,Unicode 有 2个字节 ,还有一个扩展的4字节 字符集,
'我' 的 unicode 16进制编码为 \u4e2d ,是2个字节,通过 UTF-8 编码 是 3个字节,这些都能理解
问题:通过如上的代码,显示 ‘我’ unicode编码占用 4个字节,这是为什么?如果占用4个字节,一个char(2个字节)怎么能存放的下这个4字节的中文字符呢?
------解决方案--------------------
你查看下API就清楚了;
再有是了解下UTF-16编码的规则,如BE和LE的区别;
也可测试下:前面的两个字节其实是FE FF,表示高字节在前;