Windows控制台中的unicode字符比预期的多

ka3*_*3ak 9 java windows unicode console

我想在Windows控制台中打印俄语和德语字符.所以我写了一个小测试程序来了解它的工作原理:

PrintStream ps = new PrintStream(System.out, false, "UTF-8");
ps.println("öäüß ????");
Run Code Online (Sandbox Code Playgroud)

然后我启动了cmd.exe,将其字体改为Lucida Console,它支持Unicode,用"chcp 65001"将代码页改为Unicode,并执行了我的程序.

打印出德语和俄语字符,但文字比我预期的要多一些(用红色加下划线): 在此输入图像描述

但是文本在Eclipse控制台中正确打印.有没有办法在Windows控制台中正确打印?我使用Windows 7.

我刚刚用JNI解决了这个问题,但它是否可以用纯java来解决它仍然很有趣.

ka3*_*3ak 0

阅读完这里的答案和建议后我得出的结论是JRE一定有问题。也许这个问题只存在于Windows 7中(不幸的是我没有其他Windows系统可以实验)。

解决方案是使用 JNI,或者如果您想要更简单的解决方案,则使用 JNA。我找到了一个有用的 JNA 示例,它解决了我的问题,在这里/sf/answers/624505661/