我无法弄清楚为什么DrJava不会输出Unicode符号

时间:2013-05-22 03:44:56

标签: java unicode drjava

我想就Java和编程方面令人难以置信的新兴事先道歉。但我到处寻找答案,我似乎无法找到答案。

所以我只想尝试运行以下内容:

public class WriteSquares2
{
  public static void main(String[] args)
  {
    for (int i=1; i<=10; i++)
    {
      System.out.println(i + " \u2261 " + (i % 7) + " modulo 7");
    }
  }
}

Unicode字符\ u2261是同余符号(≡)。 DrJava显示以下输出:

1 ? 1 modulo 7
2 ? 2 modulo 7
3 ? 3 modulo 7
4 ? 4 modulo 7
5 ? 5 modulo 7
6 ? 6 modulo 7
7 ? 0 modulo 7
8 ? 1 modulo 7
9 ? 2 modulo 7
10 ? 3 modulo 7

最奇怪的是,当我输入

'\u2261'

进入Interactions框,我在单引号中得到等价字符:

'≡'

我尝试过将'\ u2261'放在代码而不是“\ u2261”中,但后来我得到了这样的内容:

8803 modulo 7
8805 modulo 7
8807 modulo 7

我也试过将unicode字符插入到代码中,但这只是给出了一条错误消息。任何人都可以弄清楚发生了什么或者我做错了什么?非常感谢您的帮助。

[我应该补充一点,这不是家庭作业或任何事情,因为我们的书甚至几乎没有提到Unicode - 只是想弄明白......当我开始时,我认为这不会是这么难!]

编辑:我使用的是Mac OS 10.7.5,Java博士说它的版本是“drjava-20120818-r5686”。

编辑#2:这是使用Monospaced 12作为我的主要字体的屏幕截图。它仍然显示为问号,即使我可以让控制台返回符号,如果我直接键入它,但使用单引号。

enter image description here

3 个答案:

答案 0 :(得分:8)

问题与您使用的字体有关,这不是您的代码的问题。请参阅Edit > Preferences > Display Options > Fonts > Main Font下的DrJava设置。

DrJava在Linux上使用默认字体(Monospaced 12): DrJava on Linux with "Main Font" set to default (Monospaced 12)

DrJava在Linux上使用不同的字体(PT Sans 12): DrJava on Linux with "Main Font" set to "PT Sans 12"

这两个截图来自DrJava的同一个实例;我甚至不用把它关掉。请注意,在“交互”窗格中,字形对于我的Monospaced字体是正确的,并且是PT Sans的通用占位符。 “控制台”选项卡(未显示)也是如此。

答案 1 :(得分:2)

我做了一些研究,我找到了一个之前从另一个问题中找到的解决方案here

所以在这种情况下,它可能是类似的东西。不是你的代码,而是DrJava根据你的系统处理unicode的方式。

” 字符编码取决于系统。根据您的盒子,它可以打印16位的UTF-16编码(9794),高8位(可能是38位),或者像你的情况一样,打印低8位(66位)。

9794 / 256 = 38
9794 % 256 = 66

答案 2 :(得分:0)

您是否已将提示更改为以unicode输出。(注意英语世界的Java默认值为IS0-8859-1)。