【问题标题】:How do I insert an emoji in a Java string?如何在 Java 字符串中插入表情符号?
【发布时间】:2018-11-07 17:48:37
【问题描述】:

我正在尝试制作一个打印出表情符号的程序。但是,它不允许我在 SDK 中插入表情符号,并且 \u 不允许足够的字符来使用表情符号。有什么简单的方法吗?

所有在线解决方案似乎都引用了StringBuffer。如果没有StringBuffer,有什么办法可以做到这一点?如果没有,我将如何使用它?

【问题讨论】:

  • 这不是重复的,因为 OP 要求没有 StringBuffer 的解决方案。
  • 像这样 ____ :)
  • 什么表情符号?如果你的意思是例如??? 'GRINNING FACE' (U+1F600),如果你的源代码是 UTF-8 则写 "????",否则写 "\uD83D\uDE00"

标签: java string emoji


【解决方案1】:

如果您正在寻找使用 SNS 发送服务器端通知,那么以下工作

String context = "You can eat water too! ";
        context += new String(Character.toChars(0x1F349));

various emoji unicodes

【讨论】:

    【解决方案2】:

    可以做到,不用StringBuilder,用Unicode surrogate pair

    代理字符通常称为代理对。 它们是两个字符的组合,包含一个代码 观点。为了简化代理对的检测,Unicode 标准保留了从 U+D800 到 U+DFFF 的范围供用户使用 UTF-16。此范围内的代码点值未分配任何字符。 当程序看到这个范围内的位序列时,它们 马上——拉链! zip!-知道他们遇到了代理人 对。

    这个保留范围由两部分组成:

    • 高代理项 — U+D800 到 U+DBFF(总共 1,024 个代码点)
    • 低代理项 — U+DC00 到 U+DFFF(总共 1,024 个代码点)

    以下将打印外星人表情符号(?):

    int[] surrogates = {0xD83D, 0xDC7D};
    String alienEmojiString = new String(surrogates, 0, surrogates.length);
    System.out.println(alienEmojiString);
    System.out.println("\uD83D\uDC7D");   // alternative way
    

    【讨论】:

    • 我认为这将是一个更好的答案,如果它包含对 UTF-16 是什么、为什么 Java 字符串需要它以及为什么 ? 表示为 \uD83D\uDC7D 的快速解释。
    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2014-05-12
    • 2017-03-08
    • 1970-01-01
    • 2020-07-28
    • 2015-03-17
    相关资源
    最近更新 更多