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

中文占用字节数求解

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个字节
求解释

------解决方案--------------------
引用:

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 了;