1. 汉字编码
一个汉字在 UTF-8编码下占3个字节
System.out.println(new String("字").getBytes("UTF-8").length);//输出3
一个汉字在 GBK编码下占2个字节
System.out.println(new String("字").getBytes("GBK").length);//输出2
一般情况下 一个汉字在 UTF-16编码下占2个字节
System.out.println(new String("字").getBytes("UTF-16BE").length);//输出2
System.out.println(new String("字").getBytes("UTF-16LE").length);//输出2
特殊情况下 一个汉字在 UTF-16编码下占4个字节
System.out.println(new String("𤭢").getBytes("UTF-16BE").length);//输出4
System.out.println(new String("𤭢").getBytes("UTF-16LE").length);//输出4
这里涉及到UTF-16编码的BOM问题。参考