所有表情符号在java中都有相同的值

xytpbqjk  于 2021-07-07  发布在  Java
关注(0)|答案(2)|浏览(449)
public static void main(String[] args) {

    String bear1 = "?";
    String multiple = "\uD83D\uDC5A\uD83D\uDC5B\uD83D\uDC5C\uD83D\uDC55\uD83D\uDC5C\uD83D\uDC59\uD83D\uDC5E\uD83D\uDC61\uD83E\uDD84\uD83E\uDD93\uD83E\uDD84\uD83D\uDC34";
    String bear2 = "\ud83d\udc3b";
    String alien = "\uD83D\uDC7D";

    System.out.println("bear 1: " + bear1+ " multiple:" + multiple + " bear2: " + bear2 + " alien: " + alien);

    byte[] bear1B = bear1.getBytes();
    byte[] multipleB = multiple.getBytes();
    byte[] bear2B = bear2.getBytes();
    byte[] alienB = alien.getBytes();

    System.out.println("bear1B: " + Arrays.toString(bear1B));
    System.out.println("multiple: " + Arrays.toString(multipleB));
    System.out.println("bear2B : " + Arrays.toString(bear2B));
    System.out.println("alienB : " + Arrays.toString(alienB));

}

输出:

bear 1: ? multiple:????????????? bear2: ? alien: ?
bear1B: [63]
multiple: [63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63]
bear2B : [63]
alienB : [63]

这看起来不像是控制台的失败,因为字节都是63,尽管它们是“multiple”变量中的不同符号。我不知道我是否做错了什么,但似乎java将所有表情符号解释为一个值(63)。

lnvxswe2

lnvxswe21#

我怀疑这是个性格问题。如果指定如下字符集,则可能会修复此问题:

byte[] bear1B = bear1.getBytes(StandardCharsets.UTF_8);

StandardCharsets 存在 java.nio.charset.StandardCharsets .

ecbunoof

ecbunoof2#

请再次检查您的输出,对我来说,这是您代码的输出:
熊1:?多个:?????????????熊2:?外星人:?bear1b:[-16,-97,-112,-69]倍数:[-16,-97,-111,-102,-16,-97,-111,-101,-16,-97,-111,-100,-16,-97,-111,-103,-16,-97,-111,-98,-16,-97,-111,-95,-16,-97,-90,-124,-16,-97,-90,-109,-16,-97,-124,-16,-97,-112,-76]bear2b:[-16,-97,-112,-69]alienb:[-16,-97,-97, -111, -67]

相关问题