public class EncodeDemo {
public static void main(String[] args) throws Exception {
String s = "慕课ABC";
//该项目中默认为gbk编码 由输出可知 该编码下中文字符占2字节 英文字符占1个字节
byte[] bytes = s.getBytes();
for(byte b : bytes){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
//若改为utf-8编码获取字节编码 由输出可知 该编码下中文字符占3字节 英文字符占1个字节
byte[] bytes2 = s.getBytes("utf-8");
for(byte b : bytes2){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
// 若改为java内部默认编码unicode (utf-16) 可知 汉字英文字符均占用2个字节
byte[] bytes3 = s.getBytes("utf-16");
for(byte b : bytes3){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
System.out.println(new String(bytes2));//将utf-8编码下的字节数组转为字符串时,因为该项目下默认编码为gbk所以出现乱码
System.out.println(new String(bytes2,"utf-8"));//改为指定默认编码即可
}
public static void main(String[] args) throws Exception {
String s = "慕课ABC";
//该项目中默认为gbk编码 由输出可知 该编码下中文字符占2字节 英文字符占1个字节
byte[] bytes = s.getBytes();
for(byte b : bytes){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
//若改为utf-8编码获取字节编码 由输出可知 该编码下中文字符占3字节 英文字符占1个字节
byte[] bytes2 = s.getBytes("utf-8");
for(byte b : bytes2){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
// 若改为java内部默认编码unicode (utf-16) 可知 汉字英文字符均占用2个字节
byte[] bytes3 = s.getBytes("utf-16");
for(byte b : bytes3){
System.out.print(Integer.toHexString(b & 0xff)+" " );//int 为32位的
}
System.out.println();
System.out.println(new String(bytes2));//将utf-8编码下的字节数组转为字符串时,因为该项目下默认编码为gbk所以出现乱码
System.out.println(new String(bytes2,"utf-8"));//改为指定默认编码即可
}
}
输出如下所示: