我正在使用Emojis for Android构建自定义键盘,为了能够显示表情符号图标,我需要将“U + 1F604”等值转换为“\ uD83D \ uDE04”。
This应该让我更清楚我要做的事情。
一种方法是将“1F604”转换为十进制UTF32,从十进制UTF32转换为十进制UTF16,最后转换为十六进制UTF16。接下来的事情是将生成的2个数字转换为“\ uXXXX \ uXXXX”之类的字符串。
我的问题是:如何在Java中将UTF32转换为UTF16?我需要一些明确的指针(尝试使用ICU库,但没有办法实现)。
谢谢!
答案 0 :(得分:6)
我不认为这是真正的问题。真正的问题似乎是“如何将Unicode代码点转换为Java字符”。
对于你给出的例子,这个:
Character.toChars(0x1F604)
将返回一个两元素char[]
,其元素为0xD83D和0xDE04。
此外,
new String(Character.toChars(0x1F604))
确实会打印出来:
// May or may not display correctly in your browser!
这就是你想要的。
现在,问题仍然是从键盘获得的信息。如果它是int
的Unicode代码点,例如上面使用的方法,那么你就已经完成了设置。