2016-01-06 46 views
1

我试图打印使用下面的代码行Java中的“白笑脸”控制台窗口:试图打印“白笑脸”使用UTF-16字符代码 u263A

System.out.println('\u263A'); 

我没有笑脸,但其他一些看起来有点像问号的人物。

我正在运行使用jdk和jre 1.8.0_66版本的Windows 7 Pro操作系统任何提示为什么?

注意:我在控制台窗口中使用Consolas字体,根据字符映射对话框将代码映射到表意字符。

+2

命令提示符可能有不同的编码,如ISO-XXXX – PeerNet

+5

您可以输出完全相同的16位“Unicode代码点”到Windows命令提示符下,一个记事本的文本文件,Linux终端或MS-Word文件......并且您可能会看到四个不同的“字符”呈现。非常有用的链接:[绝对最小每个软件开发人员绝对肯定必须知道Unicode和字符集(没有借口!)](http://www.joelonsoftware.com/articles/Unicode.html) – paulsm4

回答

1

这在您的代码中并不是问题。正如评论者所指出的那样,是写一个Unicode代码点,以及如何应用程序或操作系统选择渲染字节字符的序列之间的差异。这是我在Mac上得到的:

> javac TestWhiteSmilingFace.java && java TestWhiteSmilingFace 
☺ 

尽管Windows控制台不支持Unicode输出。相反,它运行在Windows Code Pages

如果你愿意管输出到一个单独的文件,然后在记事本中打开它,那么这里有一种方法已经成功地为我工作。

  1. 使用/U选项启动cmd.exe。正如在cmd documentation所讨论的,重定向到文件此选项强制命令输出到是Unicode。
  2. 重定向命令输出到文件,即java TestWhiteSmilingFace > TestWhiteSmilingFace.txt
  3. 开启在记事本文件,即notepad TestWhiteSmilingFace.txt

此前的答案更详细地讨论了Windows控制台Unicode限制,并且还建议使用PowerShell Integrated Scripting Environment作为潜在的解决方法。

Printing Unicode characters to the PowerShell prompt

+2

谢谢克里斯。关键是“Windows控制台不支持Unicode”。在http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using上有关于同一主题的另一个很好的讨论 –