Java 扫描仪和字母 åäö

Blr*_*lrp 1 java input

我想在 Java 中输入可能包含字母 åäö 的字符串,但 Scanner 将它们转换为其他字符。我也尝试过 utf-8:

String s1 = new Scanner(System.in).nextLine();
String s2 = new Scanner(System.in, "utf-8").nextLine();
System.out.println(s1 + "|" + (int)s1.charAt(0));
System.out.println(s2 + "|" + (int)s2.charAt(0));
System.out.println((int)'å' + "|" + (int)'?');
Run Code Online (Sandbox Code Playgroud)

这产生:

å
å
?|8224
?|65533
229|63
Run Code Online (Sandbox Code Playgroud)

所有字符都变成 65533 和 utf-8。如果没有 utf-8,ä 变为 8222,ö 变为 8221,Å 变为 65533,Ä 变为 381,Ö 变为 8482。

是否有一些替代输入法允许 åäö?

我正在运行 java 8u25 并且我正在从 Windows 控制台运行该程序。

Mic*_*rdt 5

问题不在于 Java,而在于 Windows 控制台,它使用自己的编码。您可以使用chcp命令显示它。很可能是 Codepage 850。在 Java 中,你可以像这样使用它

new Scanner(System.in, "Cp850")
Run Code Online (Sandbox Code Playgroud)