使Java中的扫描程序对象具有可读性

时间:2012-12-16 04:20:12

标签: java encoding

我的问题是,当我将西里尔字母输入扫描仪时,当我尝试将其打印出来时,它会变成gobbldygook(例如输入ходить,输出=Ö-æ-¥-Π)。我有西里尔字母的Ascii值以及存储在文本文件中的UTF-8值。我很确定System.in是错的,那我到底应该做什么呢?

Scanner s = new Scanner(System.in);
String line = s.nextLine();
System.out.println(line);

1 个答案:

答案 0 :(得分:2)

(我提前为我的英语道歉) 我有同样的问题。我使用“eclipse”和文本文件编码是UTF-8。当我从控制台输入西里尔文本时,当我尝试打印时,输出结果与您的类似。

Scanner input = new Scanner(System.in,  "UTF-8");
      String word = input.nextLine();
      System.out.println(word);

结果:

дума
РґСѓРјР°

两条线必须相同,但它们不是。

我的决心是:

Scanner input = new Scanner(System.in,  "UTF-8");
      String word = input.nextLine();

      try {
        word = new String(word.getBytes("windows-1251"), Charset.forName("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      System.out.println(word);

结果:

дума
дума

这是正确的结果。

对不起,我的英语很差...... 我希望我能帮助你。