2

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

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

1 回答 1

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);

结果:

дума
дума

这是正确的结果。

很抱歉,我的英语很差...希望对您有所帮助。

于 2013-07-18T13:34:23.993 回答