2015-09-20 68 views
1

我有編碼麻煩與俄羅斯simbols。首先,我已經決定控制檯輸出問題,此代碼:編碼控制檯俄語sumbols輸入

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 "???,??" 

掃描儀SC =新的掃描儀( System.in,「UTF-8);

或」cp866「不適用於我(或僅適用於Windows)我需要這樣的通用決策,可以適應並接受輸入俄語字符到任何操作系統控制檯(mac OS/win)

回答

1
Locale loc = new Locale("ru"); 
Scanner sc = new Scanner(System.in, "UTF-8"); 
sc.useLocale(loc); 
+0

謝謝你的快速回答,它只適用於位於俄羅斯地區的mashines嗎? – TheOriginalNickname

+0

'useLocale(Locale locale)'方法將此掃描器的語言環境設置爲指定的語言環境。這是'Scanner sc',它將使用'Russian Locale'。它與位於俄羅斯地區的機器無關。 – thegauravmahawar

+0

不幸的是,它並沒有幫助 – TheOriginalNickname

0

語言環境對我沒有幫助。該文件應該保存爲UTF-8,並且運行該程序的控制檯也必須使用UTF-8。當我需要使用俄語字符時,我只需通過eclipse運行程序,這對我很有用。要保存爲UTF-8,請右鍵單擊包資源管理器 - >屬性 - >文本文件編碼中的文件,選擇其他,然後輸入UTF-8。