我试图打印使用下面的代码行Java中的“白笑脸”控制台窗口:试图打印“白笑脸”使用UTF-16字符代码 u263A
System.out.println('\u263A');
我没有笑脸,但其他一些看起来有点像问号的人物。
我正在运行使用jdk和jre 1.8.0_66版本的Windows 7 Pro操作系统任何提示为什么?
注意:我在控制台窗口中使用Consolas字体,根据字符映射对话框将代码映射到表意字符。
我试图打印使用下面的代码行Java中的“白笑脸”控制台窗口:试图打印“白笑脸”使用UTF-16字符代码 u263A
System.out.println('\u263A');
我没有笑脸,但其他一些看起来有点像问号的人物。
我正在运行使用jdk和jre 1.8.0_66版本的Windows 7 Pro操作系统任何提示为什么?
注意:我在控制台窗口中使用Consolas字体,根据字符映射对话框将代码映射到表意字符。
这在您的代码中并不是问题。正如评论者所指出的那样,是写一个Unicode代码点,以及如何应用程序或操作系统选择渲染字节字符的序列之间的差异。这是我在Mac上得到的:
> javac TestWhiteSmilingFace.java && java TestWhiteSmilingFace
☺
尽管Windows控制台不支持Unicode输出。相反,它运行在Windows Code Pages。
如果你愿意管输出到一个单独的文件,然后在记事本中打开它,那么这里有一种方法已经成功地为我工作。
/U
选项启动cmd.exe。正如在cmd documentation所讨论的,重定向到文件此选项强制命令输出到是Unicode。java TestWhiteSmilingFace > TestWhiteSmilingFace.txt
。notepad TestWhiteSmilingFace.txt
。此前的答案更详细地讨论了Windows控制台Unicode限制,并且还建议使用PowerShell Integrated Scripting Environment作为潜在的解决方法。
谢谢克里斯。关键是“Windows控制台不支持Unicode”。在http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using上有关于同一主题的另一个很好的讨论 –
命令提示符可能有不同的编码,如ISO-XXXX – PeerNet
您可以输出完全相同的16位“Unicode代码点”到Windows命令提示符下,一个记事本的文本文件,Linux终端或MS-Word文件......并且您可能会看到四个不同的“字符”呈现。非常有用的链接:[绝对最小每个软件开发人员绝对肯定必须知道Unicode和字符集(没有借口!)](http://www.joelonsoftware.com/articles/Unicode.html) – paulsm4