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

JAVA中的编码
public class code
{
public static void main(String[] args) throws Exception {
String s = "abc你好么"; 
byte[] bytes1 = s.getBytes("Unicode"); 
System.out.println(bytes1.length); // 14 
byte[] bytes2 = s.getBytes(); 
System.out.println(bytes2.length); // 9 
}
}
这段代码中,,unicode占两个字节那怎么输出是14应该是12吧???
那默认的为什么又不是unicode编码的呢??

------解决方案--------------------
UNICODE标准定义了UTF-8、UTF-16、UTF-32三种编码格式

byte[] bytes1 = s.getBytes("UTF-8"); 
System.out.println(bytes1.length); // 12

byte[] bytes1 = s.getBytes("UTF-16"); 
System.out.println(bytes1.length); // 14 

采用的编码方式不一样,结果就不一样

getBytes() 
按照平台缺省的字符编码方式把该 String 转换成字节,并把结果存到一新的字节数组中。
------解决方案--------------------
应该是编码格式不一样,表达的内容虽然一样,但占用空间不一样
------解决方案--------------------
Unicode是UTF-16,多余两个字节是保存大头小头信息的吧,猜测~