我尝试在屏幕上打印出包含西类牙口音的字符串。 我使用相同的输入但采用不同的方法得到不同的答案。
我的第一个方法是通过 Scanner 类读取包含西类牙口音的字符串
//input is a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ
Scanner sc = new Scanner(System.in);
System.out.println("Enter some spanish chars next: ");
String spanishLine = sc.nextLine();
try {
System.out.println("Output from Scanner: " + spanishLine);
System.console().writer().println(spanishLine);
} catch (Exception e) {
}
我的第二个apporche是我从这个网站找到的:http://www.rgagnon.com/javadetails/java-0046.html
String s = "a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ";
try {
System.out.println("Output from System.console: " + s);
System.console().writer().println(s);
} catch (Exception e) {
}
我的结果如下
Enter some spanish chars next:
a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ
output from Scanner: a � e � i � o � u � A � E � I � O � U � � �
output from System.console: a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ
任何人都可以解释为什么我从同一输入中得到两个不同的答案。 如何修复第一种方法以获得与第二种方法相同的结果?
最佳答案
使用第二种方法,字符串的字节直接输入到应用程序中。使用第一种方法,您依赖于扫描仪的区域设置
看 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#useLocale(java.util.Locale)
关于java - 扫描仪与 System.console( ).write( ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904391/