【问题标题】:Encoding console russian sumbols input编码控制台俄语 sumbols 输入
【发布时间】:2015-09-20 10:28:28
【问题描述】:

我在使用俄罗斯符号时遇到了编码问题。首先,我用这段代码确定了控制台输出问题:

String consoleEncoding = System.getProperty("consoleEncoding");
if (consoleEncoding != null) {
    try {
        System.setOut(new PrintStream(System.out, true, consoleEncoding));
    } catch (java.io.UnsupportedEncodingException ex) {
        System.err.println("Unsupported encoding set for console: "+consoleEncoding);
    }
}

但我有控制台Scanner 输入也可以有俄罗斯符号,但如果会这样

Scanner sc = new Scanner (System.in);
String text = sc.nextline(); //if user input here eg "Привет,Мир"
System.out.println(text); // here I will recieve "???,??"

Scanner sc = new Scanner (System.in, "UTF-8);

或“cp866”对我不起作用(或仅适用于 Windows)我需要这样的通用决定,可以适应和接受任何操作系统控制台(mac OS/win)的输入俄语字符

【问题讨论】:

    标签: java encoding console symbols cyrillic


    【解决方案1】:
    Locale loc = new Locale("ru");
    Scanner sc = new Scanner(System.in, "UTF-8");
    sc.useLocale(loc);
    

    【讨论】:

    • 感谢您的快速回答,它是否仅适用于位于俄罗斯地区的机器?
    • 方法useLocale(Locale locale) 将此扫描仪的区域设置为指定的区域。这是Scanner sc,它将使用Russian Locale。它与位于俄罗斯地区的机器无关。
    • 不幸的是它没有帮助
    • 你可以使用Locale dLocale = new Locale("ru");中的Java docs
    • 它仍然给我像 ?аЁў?в, ?Ёа 这样的输出(当我的输入是“Привет, Мир”时)
    【解决方案2】:

    语言环境对我没有任何帮助。该文件应保存为 UTF-8,运行程序的控制台也必须使用 UTF-8。当我需要使用俄语字符时,我只是通过 eclipse 运行程序,这对我有用。要保存为 UTF-8,请在包资源管理器中右键单击文件 -> 属性 -> 文本文件编码,选择其他,输入 UTF-8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2021-07-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多