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);
我收到一个包含表情符号代码的 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)
您将获得以下代码:
int hex = Integer.parseInt(unicodeStr.substring(2), 16);