UTF32到Java中的UTF16转换

时间:2014-03-13 18:34:58

标签: java android unicode

我正在使用Emojis for Android构建自定义键盘,为了能够显示表情符号图标,我需要将“U + 1F604”等值转换为“\ uD83D \ uDE04”。

This应该让我更清楚我要做的事情。

一种方法是将“1F604”转换为十进制UTF32,从十进制UTF32转换为十进制UTF16,最后转换为十六进制UTF16。接下来的事情是将生成的2个数字转换为“\ uXXXX \ uXXXX”之类的字符串。

我的问题是:如何在Java中将UTF32转换为UTF16?我需要一些明确的指针(尝试使用ICU库,但没有办法实现)。

谢谢!

1 个答案:

答案 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代码点,例如上面使用的方法,那么你就已经完成了设置。