首先,我们可以通过Compart这个网站来查询指定字符的各种编码(Unicode代码点、UTF-8编码、UTF-16编码):
将Unicode代码点转为字符串
代码如下:
public class Main {
public static void main(String[] args) {
// 原始Unicode代码点,对应字符😭
int codePoint = 0x1F62D;
// 将Unicode代码点转为utf-16编码(用char存储)
char[] arr = Character.toChars(codePoint);
// 从char数组来构造一个string
String s = new String(arr);
System.out.println(s);
}
}
将UTF-8编码转为字符串
代码如下:
public class Main {
public static void main(String[] args) {
// 用byte数组存储utf-8编码,需要先将字面量转为byte(因为数值可能超过127)
byte[] utf8Code = {(byte)0xF0, (byte)0x9F, (byte)0x98, (byte)0xAD};
String s = new String(utf8Code, StandardCharsets.UTF_8);
System.out.println(s);
}
}
将UTF-16编码转为字符串
方法一
在Java的字符串字面量中,可直接使用\uXXXX
来表示一个utf-16编码单元:
public class Main {
public static void main(String[] args) {
String s = "\uD83D\uDE2D";
System.out.println(s);
}
}
方法二
先使用char数组存储utf-16编码,再将其转为string,效果也是一样的:
public class Main {
public static void main(String[] args) {
char[] utf16Code = {0xD83D, 0xDE2D};
String s = new String(utf16Code);
System.out.println(s);
}
}