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

时间:2016-04-19 19:40:12

标签: java unicode-string

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

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

我尝试了这个,但它崩溃了:

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

谢谢你们!

2 个答案:

答案 0 :(得分:2)

Unicode编号为“字符”,代码点,最多3个字节范围,例如U + 1F44F。

Java String有一个带代码点的构造函数。

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 String包含Unicode作为内部字符数组。每个字符'(2个字节)都是UTF-16编码的。对于较低范围,char可以是代码点。并且U + 0102可以写为包含char "\u0102"的{​​{1}}。

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

'\u0102'

答案 1 :(得分:2)

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

的前两个字符

您将获得以下代码:

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