我收到了一个包含表情符号代码的unicode字符串,例如:" U + 1F44F" (来自表情符号表:http://apps.timwhitlock.info/emoji/tables/unicode)。
我想将此字符串转换为Integer,我该怎么做?
我尝试了这个,但它崩溃了:
int hex = Integer.parseInt(unicodeStr, 16);
谢谢你们!
答案 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);