我写了一个非常简单的Java程序,尝试输入带有重音符号的字符串时,我注意到Scanner(或终端)在处理它们时遇到问题。
我不知道如何解决编码问题。
码
System.out.println("aeíóu"); // output => aeíóu
Scanner input = new Scanner(System.in, "UTF-8");
String str = input.nextLine(); // input => aeíóu
input.close();
System.out.println(str); // output => ae u
输出(Visual Studio代码)
Java Process Console:
命令:
环保环境
操作系统:Windows 10 Pro
JDK:1.8.0_231
Visual Studio代码:1.39.2
最佳答案
我不知道这是否会有帮助,因为我已经在Windows中对其进行了测试,并且Microsoft是否已解决此问题或进行了改进(或者JVM是否对unicode的输出方式进行了任何更改),所以已经有一段时间了:
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/
问题是(还是仍然是?)Windows控制台无法可靠地用于使用C标准库(字节)I / O函数的应用程序的unicode输入和输出。这也包括Java。代码页65001已损坏。
不知道上面的文章是否可以指出正确的方向。