java - 扫描仪与 System.console( ).write( )

标签 java string

我尝试在屏幕上打印出包含西类牙口音的字符串。 我使用相同的输入但采用不同的方法得到不同的答案。

我的第一个方法是通过 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/

相关文章:

c# - 桌面 Java 应用程序替代方案

java - 如何在用户的 AppData 目录中创建目录和文件?

java - 如何使用parseInt将字符串转换为整数?

python - 如何 "properly"打印列表?

java - 在 Spring 中使用哪种传播?

java - 我们可以使用 Post 方法从数据库中获取数据还是只使用 GET?

excel - 文本/字符串上的 DAX LOOKUPVALUE

string - 如何从 Mac 中的二进制文件中提取硬编码字符串?

java - java.util.Collections.sort() 方法的时间复杂度是多少?

c++ - 将 'long' 类型转换为二进制字符串