【问题标题】:Android emoji issue(convert "\uD83D\uDE04" to 0x1F604)Android emoji 问题(将“\uD83D\uDE04”转换为 0x1F604)
【发布时间】:2016-08-18 13:43:54
【问题描述】:

我可以通过how set emoji by unicode in android textview这种方式在textview中显示表情符号,但是如何将“uD83D\uDE04”之类的内容转换为代码点0x1F604(“uD83D\uDE04”表示0x1F604)?

【问题讨论】:

标签: android emoji


【解决方案1】:

我找到了办法: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));

【讨论】:

  • 这只是一种复杂的做法emojiString = "\ud83d\ude04"
  • @Henry 你是对的。我只是混淆了这两个: String s = "\\ud83d\\ude04";String s = "\ud83d\ude04"
【解决方案2】:

感谢@Henry,我找到了一个容易获得的表情符号字符串:

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;

【讨论】:

    【解决方案3】:

    做这样的事情。

    将 UTF-16 转换为 UTF-8

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

    获取代码点

    int codepoint = text.codePointAt(0);
    

    将其转换为 Unicode

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

    【讨论】:

      【解决方案4】:

      我通过创建这个方法来修复它:

      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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-08-16
        • 2016-10-12
        • 1970-01-01
        • 2017-02-18
        • 1970-01-01
        • 2018-05-09
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多