java里一个英文or汉字在Unicode里都占两个字节
String cn = "我";
System.out.println("我-Unicode编码长度: "+cn.getBytes("unicode").length);
String cn2 = "我们";
System.out.println("我们-Unicode编码长度: "+cn2.getBytes("unicode").length);
输出结果是:
我-Unicode编码长度:4
我们-Unicode编码长度:6
求解为什么单个字符长度会是4?版本:JavaSE-1.7
Unicode实际上只能算是国际标准,不能说是编码方案。UTF-8和UTF-16都是对Unicode标准的具体实现方案,区别在于UTF-8是不定长的(最多4字节),UTF-16是定长的2字节。两个字节就存在高低位之分(高位字节放前/大端/BigEndian和低位字节放前/小端/LittleEndian),针对不同的二进制存放方式,UTF-16编码方案将在字符串前端的额外添加两个字节中指定字节的存放方式(FE FF对应大端,FF FE对应小端)。上面的Java实验中,UTF-8对英文编码时就只有1个字节长,而对中文编码时就有3个字节长。而Java中实现Unicode标准时采用的是UTF-16BE(大端)方案,因此不管是英文还是中文,最终的字节数为字符数的两倍+2
http://www.cnblogs.com/newstar/archive/2011/06/13/2079870.html