从char UTF-16获取表情符号unicode

时间:2013-12-19 19:02:23

标签: android unicode emoticons

我需要截取表情符号条目并更改我自己的表情符号。 当我拦截一个表情符号,例如,FACE WITH MEDICAL MASK(\ U + 1F604)时,我得到一个UTF-16字符(0xD83D 0xDE04),是否可以将此char值转换为unicode值?

我需要将0xD83D 0xDE04转换为\ u1f604。

谢谢,

2 个答案:

答案 0 :(得分:3)

  

我得到一个UTF-16字符(0xD83D 0xDE04),是否可以将此char值转换为unicode值?

对于字符串中的单个代码点,您可以将其转换为带有以下内容的整数:

int codepoint = "\uD83D\uDE04".codePointAt(0);  // 0x1F604

使用codePointCount / codePointAt查看整个字符串是非常繁琐的。 Java / Dalvik的字符串类型与UTF-16代码单元密切相关,而codePoint方法则是一种很难集成的事后想法。如果您只是希望用其他字符串替换表情符号,那么最好用字符串类型中的两个代码单元进行普通字符串替换或正则表达式,例如text.replace("\uD83D\uDE04", ":-D")

(带医用口罩的BTW面部为U + 1F637。)

答案 1 :(得分:0)

\u1f604是该表情符号的UTF-32编码。你可以这样转换:

byte[] bytes = "\uD83D\uDE37".getBytes("UTF-32BE");