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

java 字符小问
String str="a";
System.out.println(str.getBytes().length); 
String底层是字符数组,字符用unicode编码,unicode用两个字节代表一个字符,为什么这个结果是1?不是2
 String str="中";
System.out.println(str.getBytes().length); 这个输出就是2

或者说string的编码不是unicode?

------解决方案--------------------
Java code

public static void main(String args[]) throws Exception{
       String str="a";
       System.out.println(str.getBytes().length); //1
       System.out.println(str.getBytes("GB2312").length); //1
       System.out.println(str.getBytes("utf-8").length); //1
       System.out.println(str.getBytes("UTF-16BE").length); //2
       System.out.println(str.getBytes("UTF-16LE").length); //2
       System.out.println(str.getBytes("UTF-16").length); //4
   }