java 字符编码问题

1 String str = "中国";
2 System.out.println("第一部分-------------------------------------------");
3 System.out.println(str.length());
4 System.out.println(str.getBytes().length);
5 System.out.println(new String(str.getBytes(),"UTF-8").length());
6 System.out.println(new String(str.getBytes(),"UTF-8").getBytes().length);
7 System.out.println("--------------------------------------------------");
8
9 String str2 ="abc中国";
10 System.out.println("第二部分-------------------------------------------");
11 System.out.println(str2.length());
12 System.out.println(str2.getBytes().length);
13 System.out.println(new String(str2.getBytes(),"UTF-8").length());
14 System.out.println(new String(str2.getBytes(),"UTF-8").getBytes().length);
15 System.out.println("--------------------------------------------------");

第一部分:
第一个:字符串长度2;
第二个:由于汉字占两个字节所以得到长度应该是4;
第三个:不知道是什么原因,我想是不是按照UTF-8编码后一个汉字就成了一个半字节。所以就是3;
的四个:再取其 byte 数组其长度就成了4;
第二部分:
第一个:字符串长度5;
第二个:同上原理所以是7;
第三个:同上原理汉字变成一个半字节,而其它的没变,所以是6;
第四个:同上原理再取其 byte 数组其长度就成了7;

posted on 2010-12-13 23:37  拭旧  阅读(852)  评论(0编辑  收藏  举报

导航