输入Java扫描器和字母
我想输入可能包含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)'?');
这将产生:
å
å
?|8224
?|65533
229|63
所有字符使用utf-8变成65533。没有utf-8,ä变成8222,ö变成8221,ä变成65533,Ä变成381,Ö变成8482
有没有其他的输入法可以支持åäö
我正在运行Java8U25,并且正在从windows控制台运行该程序
# 1 楼答案
问题不在于Java,而在于windows控制台,它使用自己的编码。可以使用
chcp
命令将其显示出来。很可能是850码页。在Java中,您可以这样使用# 2 楼答案
您需要为输出流设置编码(请参见this thread):
# 3 楼答案
Windows命令。exe不支持UTF-8编码。必须使用^{} 和^{}. ,或者使用
chcp
命令,比如new Scanner(System.in, "Cp850")