最近遇到一個問題,就是我的Eclipse無法正確顯示中文,情況如下:
1.讀取一個文件的中文輸出到控制台,發現亂碼;
2.通過System.out輸出到控制台,沒有問題,但是重新讀取輸出到控制台的中文,亂碼;
3.通過控制台輸入內容,然后將這些內容寫入一個文件,打開,亂碼。
我以為是我的Eclipse的中文編碼設置有問題,但是全都改過后,發現問題依然存在,系統也是支持中文,設置沒有問題。既然這樣,那么,就是程序有問題。於是我就寫了這么一個簡單的代碼:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println(reader.readLine()); reader.close();
檢驗我的控制台是否有問題,結果亂碼。可能存在的問題只有兩個地方:
1.System.in存在問題;
2.reader.readLine()有問題。
reader.readLine()暫時認為沒有問題,因為BufferedReader是專門讀取字符的,但是我這里有一個InputStreamReader是讀取字節的,對於中文來說,是要占兩個字節的,但是InputStreamReader一次只讀取一個字節,如果中文的字節數是奇數,就有可能出現亂碼。
網上有很多方法,比如說,指定中文編碼格式,我試過,不行。最后,終於找到一個方法,經測試可行,方法如下:
(1)關閉Eclipse;
(2)在Eclipse.exe同目錄下,有一個eclipse.ini,打開,然后添加這么一句:
-Dfile.encoding = utf-8
保存;
(3)重新打開Eclipse,問題就沒有了。
-Dfile.encoding = utf-8,就是字面上的意思,設置系統屬性file.encoding為utf-8.
