public static String bytesToHexStringPrint(byte[] bArray){
if(bArray == null || bArray.length == 0){
return null;
}
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++){
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append("0");
sb.append(sTemp.toUpperCase()+" ");
}
return sb.toString();
}
public static void utf8LengthTest(){
String t= "中文测试abc";
try {
System.out.println("len1 = "+t.length());
System.out.println("len2 = "+t.getBytes().length);
System.out.println(bytesToHexStringPrint(t.getBytes()));
String out = new String(t.getBytes(), "utf-8") ;
System.out.println("len3 = "+out.getBytes().length);
System.out.println(bytesToHexStringPrint(out.getBytes()));
//上面打印和这里相同,说明java文件也是为utf-8编码的
out = new String(t.getBytes(), "utf-16") ;
System.out.println("len4 = "+out.getBytes().length);
System.out.println(bytesToHexStringPrint(out.getBytes()));
out = new String(t.getBytes(), "utf-8") ;
System.out.println("len5 = "+out.getBytes("gbk").length);
System.out.println(bytesToHexStringPrint(out.getBytes("gbk")));
out = new String(t.getBytes(), "GB2312") ;
System.out.println("len6 = "+out.getBytes().length);
System.out.println(bytesToHexStringPrint(out.getBytes()));
out = new String(t.getBytes(), "ISO8859-1") ;
System.out.println("len6 = "+out.getBytes().length);
System.out.println(bytesToHexStringPrint(out.getBytes()));
} catch (Exception e) {
e.printStackTrace();
}
}
结果:
len1 = 7
len2 = 15
E4 B8 AD E6 96 87 E6 B5 8B E8 AF 95 61 62 63
len3 = 15
E4 B8 AD E6 96 87 E6 B5 8B E8 AF 95 61 62 63
len4 = 24
EE 92 B8 EA B7 A6 E9 9A 87 EE 9A B5 E8 AF A8 EA BE 95 E6 85 A2 EF BF BD
len5 = 11
D6 D0 CE C4 B2 E2 CA D4 61 62 63
len6 = 27
E6 B6 93 EF BF BD EF BF BD EF BF BD E5 A8 B4 EF BF BD E7 92 87 EF BF BD 61 62 63
len6 = 27
C3 A4 C2 B8 C2 AD C3 A6 C2 96 C2 87 C3 A6 C2 B5 C2 8B C3 A8 C2 AF C2 95 61 62 63