我正在尝试编写一个可以打印出表情符号的程序。然而,在SDK中,我无法插入表情符号,\u
不足以使用表情符号所需的字符数。有没有简单的方法可以解决这个问题?
所有在线解决方案似乎都涉及到 StringBuffer
。是否有不使用 StringBuffer
的方法?如果没有,我该如何使用它?
String context = "You can eat water too! ";
context += new String(Character.toChars(0x1F349));
可以使用Unicode代理对来完成,而不需要使用StringBuilder
:
代理字符通常称为代理对。它们是由两个包含单个代码点的字符组合而成的。为了便于检测代理对,Unicode标准保留了U+D800到U+DFFF范围供UTF-16使用。在此范围内没有为代码点分配任何字符。当程序看到落在此范围内的一系列位时,它们立即就会知道遇到了代理对。
这个保留范围由两部分组成:
- 高代理项 — 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
\uD83D\uDC7D
,那么我认为这将是一个更好的答案。 - VGR
""
,如果不是,则写"\uD83D\uDE00"
。 - Andreas