【问题标题】:UTF32 To UTF16 Conversion In JavaJava中的UTF32到UTF16转换
【发布时间】:2014-03-13 18:34:58
【问题描述】:

我正在为 Android 构建一个带有表情符号的自定义键盘,为了能够显示表情符号图标,我需要将诸如“U+1F604”之类的值转换为“\uD83D\uDE04”。

This 应该更清楚我要做什么。

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

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

谢谢!

【问题讨论】:

    标签: java android unicode


    【解决方案1】:

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

    对于你给出的例子,这个:

    Character.toChars(0x1F604)
    

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

    还有,

    new String(Character.toChars(0x1F604))
    

    确实会打印:

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

    这就是你想要的。

    现在,问题仍然是您从键盘获得什么信息。如果它是int 形式的Unicode 代码点,例如上面使用的方法,那么您就大功告成了。

    【讨论】:

    • 很高兴我能帮上忙……我在这个过程中也学到了一些东西;)
    猜你喜欢
    • 2016-10-02
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多