我的問題是,當我將西裏爾字母輸入掃描儀時,當我嘗試打印出來它變成gobbldygook(例如輸入ходить,輸出=Ö-æ-¥ - Π)。我有西裏爾字母的Ascii值以及存儲在文本文件中的UTF-8值。我非常確定System.in是錯誤的,那麼究竟該怎麼做?使用西里爾語言掃描儀對象在Java中可讀
Scanner s = new Scanner(System.in);
String line = s.nextLine();
System.out.println(line);
我的問題是,當我將西裏爾字母輸入掃描儀時,當我嘗試打印出來它變成gobbldygook(例如輸入ходить,輸出=Ö-æ-¥ - Π)。我有西裏爾字母的Ascii值以及存儲在文本文件中的UTF-8值。我非常確定System.in是錯誤的,那麼究竟該怎麼做?使用西里爾語言掃描儀對象在Java中可讀
Scanner s = new Scanner(System.in);
String line = s.nextLine();
System.out.println(line);
(我提前道歉,我的英語) 我有同樣的問題。我使用「eclipse」和文本文件編碼是UTF-8。當我從控制檯輸入西裏爾字母文本時,當我嘗試打印它時,輸出結果與您的類似。
Scanner input = new Scanner(System.in, "UTF-8");
String word = input.nextLine();
System.out.println(word);
結果:
дума
РґСѓРјР°
這兩條線必須是相同的,但他們aren'n。
我的決心是:
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);
結果:
дума
дума
這是一個正確的結果。
對不起,但我的英語很差... 我希望我幫你。
你有沒有嘗試設置掃描儀的字符集?新的掃描器(System.in,「UTF-8」)?http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#Scanner(java.io.InputStream, java.lang.String) – kosa
是的,不幸的是,它是相同的結果 – user1906927
然後它是你的輸出設備。如果您正在打印到Windows終端,它將產生垃圾,除非您轉換回輸出正確的代碼頁。你的輸出看起來像你試圖打印UTF-8而沒有爲終端編碼。 –