UTF32到Java中的UTF16转换

 回忆的沙漏2502890423 发布于 2023-01-18 11:31

我正在使用Emojis for Android构建自定义键盘,为了能够显示表情符号图标,我需要将诸如"U + 1F604"之类的值转换为"\ uD83D\uDE04".

这应该让我更清楚我正在尝试做什么.

一种方法是将"1F604"转换为十进制UTF32,从十进制UTF32转换为十进制UTF16,最后转换为十六进制UTF16.接下来的事情是将生成的2个数字转换为像"\ uXXXX\uXXXX"这样的字符串.

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

谢谢!

1 个回答
  • 我不认为这是真正的问题.真正的问题似乎是"如何将Unicode代码点转换为Java字符".

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

    Character.toChars(0x1F604)
    

    将返回一个char[]元素为0xD83D和0xDE04 的双元素.

    也,

    new String(Character.toChars(0x1F604))
    

    确实会打印:

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

    这就是你想要的.

    现在,问题仍然是从键盘获得的信息.如果它是一个Unicode代码点int,例如上面使用的方法,那么你们都已经设置好了.

    2023-01-18 11:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有