中文占用字节数求解
String str = "a中国";
for(int i=0;i<str.length();i++){
Character ch = str.charAt(i);
System.out.println(ch+" "+ch.SIZE+" "+String.valueOf(ch).getBytes().length);
}
结果:
a 16 1
中 16 3
国 16 3
字符a 占用16比特位(2个字节),但是后面的为什么是1个字节
中文‘中’ 占用16比特位(2个字节),但是为什么后面又显示是3个字节
求解释
------解决方案--------------------
你这里用的是UTF-8编码吧, 你改成:
System.out.println(ch+" "+ch.SIZE+" "+String.valueOf(ch).getBytes("GBK").length);
中文字符应该是 2 了;