2014-03-13 35 views
2

我正在构建一个Emojis for Android的自定义键盘,为了能够显示Emoji图标,我需要将诸如“U + 1F604”之类的值转换为“\ uD83D \ uDE04" 。UTF32 UTF16在Java中的转换

This应该说明我想要做什么。

一种方法是将“1F604”转换为十进制UTF32,从十进制UTF32转换为十进制UTF16,最后转换为十六进制UTF16。接下来的事情就是将结果2的数字转换成像“\ uXXXX \ uXXXX”这样的字符串。

我的问题是:如何将UTF32转换为Java中的UTF16?我需要一些清晰的指针(试图使用ICU库,但没有找到办法做到这一点)。

谢谢!

回答

6

我不认为这是真正的问题。真正的问题似乎是“如何将Unicode代码转换为Java字符”。

对于你给的例子,这样的:

Character.toChars(0x1F604) 

将返回一个两个元素char[]的元素是0xD83D和0xDE04。

此外,

new String(Character.toChars(0x1F604)) 

确实会打印:

// May or may not display correctly in your browser! 

这是你想要的。

现在,问题仍然是从键盘上获得什么信息。如果它是一个Unicode代码点,例如上面使用的方法,那么你就全部设置为int

+0

非常感谢! –

+0

很高兴我能帮上忙......我也在这个过程中学到了一些东西;) – fge