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