Android emoji issue(convert “\uD83D\uDE04” to 0x1F604)

江枫思渺然 提交于 2019-12-05 07:55:36

问题


I can display emoji in textview by this way how set emoji by unicode in android textview , but how to convert something like "uD83D\uDE04" to the code point 0x1F604("uD83D\uDE04" represent 0x1F604)?


回答1:


Do something like this.

Convert UTF-16 to UTF-8 `

String text = new String("uD83D\uDE04".getBytes(), StandardCharsets.UTF_8);`

Get the code point

int codepoint = text.codePointAt(0); 

Convert it to Unicode

String yourUnicode="U+"+Integer.toHexString(codepoint)



回答2:


I find a way:java.lang.Character.toCodePoint(char high, char low)

int ss1 = Integer.parseInt("d83d", 16);
int ss2 = Integer.parseInt("de04", 16);

char chars = Character.toChars(ss1)[0];
char chars2 = Character.toChars(ss2)[0];

int codepoint = Character.toCodePoint(chars, chars2);
String emojiString = new String(Character.toChars(codepoint));



回答3:


Thanks to @Henry,I find a easy to get emojiString:

String ss1 = "d83d";
String ss2 = "de04";
int in1 = Integer.parseInt(ss1, 16);
int in2 = Integer.parseInt(ss2, 16);
String s1 = Character.toString((char)in1);//   http://stackoverflow.com/questions/5585919/creating-unicode-character-from-its-number
String s2 = Character.toString((char)in2);
String emojiString = s1+s2;



回答4:


I fix it by creating this method:

fun encodeEmoji(message: String): String {
    try {
        val messageEscape = StringEscapeUtils.escapeEcmaScript(message)
        val chars = Character.toChars(
                Integer.parseInt(messageEscape
                        .subSequence(2, 6).toString(), 16))[0]
        val chars2 = Character.toChars(
                Integer.parseInt(messageEscape
                        .subSequence(8, messageEscape.length).toString(), 16))[0]
        val codepoint = Character.toCodePoint(chars, chars2)
        return Integer.toHexString(codepoint)
    } catch (e: UnsupportedEncodingException) {
        return message
    }
}


来源:https://stackoverflow.com/questions/36835966/android-emoji-issueconvert-ud83d-ude04-to-0x1f604

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!