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,多余两个字节是保存大头小头信息的吧,猜测~