Java: 如何将 unicode 字符串表情符号转换为整数

Java: how to convert unicode string Emoji to Integer

我收到一个包含表情符号代码的 unicode 字符串,示例:"U+1F44F"(来自表情符号 table:http://apps.timwhitlock.info/emoji/tables/unicode)。

我想将此字符串转换为整数,我该怎么做?

我试过了,但它崩溃了:

int hex = Integer.parseInt(unicodeStr, 16);

谢谢大家!

Unicode 数字,如 "characters," 代码点 ,最多 3 字节范围,如 U+1F44F。

Java 字符串有一个带代码点的构造函数。

int[] codepoints = { 0x1F44F };
String s = new String(codepoints, 0, codepoints.length);

public static String fromCodepoints(int... codepoints) {
    return new String(codepoints, 0, codepoints.length);
}

s = fromCodepoints(0x1F44F, 0x102);

Java 字符串包含 Unicode 作为内部字符数组。每个 char '(2 个字节)都是 UTF-16 编码的。对于较低的范围,一个 char 可以是一个代码点。 U+0102 可以写成 "\u0102" 包含字符 '\u0102'.

请注意,表情符号必须可以用字体表示。

Font font = ...
if (!font.canDisplay(0x1F44F)) {
    ...
}

@flakes 的评论给出了正确答案。 U+ 仅表示以下代码点(或十六进制数)是 Unicode。您要转换为整数的值是代码点,因此您必须使用 .substring(2)

省略前 2 个字符

您将获得以下代码:

int hex = Integer.parseInt(unicodeStr.substring(2), 16);