[英]I can't figure out why DrJava won't output Unicode symbols
我想就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作为我的主要字体的屏幕截图。 它仍然显示为问号,即使我可以让控制台返回符号,如果我直接键入它,但使用单引号。
问题与您使用的字体有关,这不是您的代码的问题。 请参阅Edit > Preferences > Display Options > Fonts > Main Font
下的DrJava设置。
DrJava在Linux上使用默认字体(Monospaced 12):
DrJava在Linux上使用不同的字体(PT Sans 12):
这两个截图都来自DrJava的同一个实例; 我甚至不用把它关掉。 请注意,在“交互”窗格中,字形对于我的Monospaced字体是正确的,并且是PT Sans的通用占位符。 “控制台”选项卡中也会出现相同的情况(未显示)。
我做了一些研究,我发现,是从另一个问题之前找到解决方案在这里
所以在这种情况下,它可能是类似的东西。 不是你的代码,而是DrJava根据你的系统处理unicode的方式。
“字符编码取决于系统。根据你的盒子,它可能会打印16位的UTF-16编码(9794),高8位(可能是38位),或者像你的情况一样,打印低位8位(66位)。
9794 / 256 = 38
9794 % 256 = 66
“
您是否已将提示更改为以unicode输出。(注意英语世界的Java默认值为IS0-8859-1)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.