【问题标题】:Java eclipse unicodes [duplicate]Java eclipse unicodes [重复]
【发布时间】:2018-04-10 12:32:46
【问题描述】:

我对 java 中的 unicode 有疑问。我在 Eclipse 中编程,需要编辑“Hello World!”紧随其后的是一颗心和一只企鹅。除了企鹅,一切都很好。不知何故,我无法编辑超过 4 个字符的 unicode。这是我的代码:

打包HelloWorld;

公共类 HelloWorld 扩展 MiniJava{

public static void main(String[] args) {
    String s1 = "Hello World! ";
    char c1 = '\u2661';
    char c2 = ''; //\u1F427
    write (s1+c1+c2);

}

}

你能帮我解决这个问题吗?

【问题讨论】:

  • 为什么不能?你遇到了什么错误?
  • 我得到的错误如下:线程“main”java.lang.Error中的异常:未解决的编译问题:HelloWorld.HelloWorld.main(HelloWorld.java:8)处的字符常量无效跨度>
  • 尝试将c2 变成一个值为"\uD83D\uDC27" 的字符串(感谢@cppbeginner 评论中的链接)。
  • 当我按照你的意图将 c2 作为字符串时,会出现“Hello World!”

标签: java unicode


【解决方案1】:

正如 cmets 通过链接到 SO 的另一个线程中已经提到的,三字节 unicode 字符在 Java 中并不容易。您必须将其转换为两个字符。 Java 为您提供了一种进行这种转换的方法,因此您的源代码可能如下所示:

public static void main(String[] args) {
    String s1 = "Hello World! ";
    char c1 = '\u2661';
    char[] c2 = Character.toChars(0x1F427);
    write (s1);
    write (c1);
    write (new String(c2));
}

【讨论】:

  • 另一种选择是String.format("%s%s%c", s, c1, 0x1f427)
  • 感谢您的回答,当我尝试您的第一个代码时,出现的只是“Hello World!”然后在一个新窗口中出现一个数字,然后在一个新窗口中又什么都没有。我没有t know what is happening. And for you second code, what do you mean with the "s," in the parenthesis? D0nt 我需要为此先引入一个变量吗?
  • 我不知道 write 实际上是什么。我假设它类似于Writer.write,其中多次调用 write 不应与连接这些值的调用不同。似乎不是这样,所以你可以试试write(s1 + c1 + new String(c2)),而不是我的代码
  • 感谢您的评论,它也不起作用。 t appear a penguin. Isnt 有没有数组的可能性?
  • 您是否按照 cmets 中其他人的建议尝试过 "\uD83D\uDC27"?如果这也没有显示企鹅,那么问题就在于演示文稿的代码(即write 方法),而不是此处提供的代码。 char-array 没有解决方法,请参阅与您的问题相关的 cmets 链接到的其他 SO-article 中的描述
猜你喜欢
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2013-06-11
相关资源
最近更新 更多