這是我的代碼:如何讓System.in輸入流讀取utf-8字符?
public class MyTestClass {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
InputStream inputStream = System.in;
int read = inputStream.read();
System.out.println(read);
System.out.println((char)read);
System.out.println(s);
}
}
我輸入字母ğ
兩次,當我運行程序。控制檯輸出將爲:
ğ
ğ
196
Ä
ğ
如何查看正確的字母而不是Ä
?掃描儀似乎做正確的事情。
實際上,爲什麼這種方法不起作用?這裏有什麼問題?
那麼,但爲什麼我的方法不工作?我試圖學習更多,而不是試圖讓它工作。 – 2014-09-27 17:22:58
@KorayTugay因爲無論編碼如何,InputStream#read都讀取一個字節。在UTF-8中,「»是一個多字節字符,因此您的方法只是讀取第一個字節並顯示其ASCII值。閱讀器將正確讀取兩個字節以創建適當的字符。 – 2014-09-27 17:24:21