汉
GB2312 值为 BABA
UniCode 值为 6C49
UTF-8 值为 E6B189
字
GB2312 值为 D7D6
UniCode 值为 5B57
UTF-8 值为 E5AD97
可以通过打印汉字的byte判断是什么编码
public static void main(String[] args) throws IOException {
// window系统汉字控制台输入输出是GBK编码, idea设置java编码是utf-8,所以返回utf-8 byte数组
byte[] utf8Byte = "汉字".getBytes("GBK");
// 将byte数组转换成为 utf-8 的字符串
String utf8Str = new String(utf8Byte, StandardCharsets.UTF_8);
System.out.println("UTF-8编码:" + Hex.toHexString(utf8Str.getBytes(StandardCharsets.UTF_8)).toUpperCase(Locale.CHINA));
System.out.println("Unicode编码:" + Hex.toHexString(utf8ToUnicode(utf8Str)).toUpperCase(Locale.CHINA));
System.out.println("GBK编码:" + Hex.toHexString(utf8Str.getBytes("GBK")).toUpperCase(Locale.CHINA));
}
// java字符串的char就是uniCode,char占2个字节,一个char一个汉字
public static byte[] utf8ToUnicode(String utf8Str) {
char[] unicodeData = utf8Str.toCharArray();
byte[] uniCodeByte = new byte[unicodeData.length * 2];
for (int i = 0; i < unicodeData.length; i++) {
uniCodeByte[2 * i] = (byte) ((unicodeData[i] >> 8) & 0XFF);
uniCodeByte[2 * i + 1] = (byte) (unicodeData[i] & 0xFF);
}
return uniCodeByte;
}