原文鏈接http://hioies.iteye.com/blog/1392571
- 博客分類:
- eclipse
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String message;
- while((message = reader.readLine()) != null){
- System.out.println(message);
- }
這是很常見的獲取鍵盤輸入的一段Java代碼,但在運行過程中,我發現只要我輸入的是中文,而且字符數爲奇數,就會出現最後一個字符爲亂碼的問題,花了一下午的時間找問題,查原因,最後一篇文章幫我找到了原因:
產生原因:因爲這個開源項目的默認字符編碼爲UTF-8,所以我的控制檯的字符編碼也自動變成了UTF-8,而鍵盤的輸入流的默認格式是GBK格式,這樣就造成了在GBK轉UTF-8的過程中產生的奇數亂碼錯誤(這個問題的解釋可以在搜索引擎找到)。
解決辦法:
1.在代碼區域右鍵 -> run as -> run configurations -> common(右側) -> console encoding
如果出現此錯誤,此時的編碼格式應該是UTF-8,選擇Other,這時可能沒有GBK選項,如果沒有,則執行之後操作。
2.更改該項目的文本文件編碼,項目右鍵 -> properties -> resource -> 先將 text file encoding調整回GBK,然後再回去重新設置console encoding編碼爲GBK。
現在很多項目要求在項目開始之前統一字符編碼爲UTF-8,這是爲了更好的支持國際化,這無可避免得可能會出現控制檯亂碼這類比較偏門的問題(最少我查了挺久的),所以寫出來給大家分享一下~
get方式提交的參數編碼,只支持iso8859-1編碼。 因此,如果裏面有中文。 在後臺就需要轉換編碼,如下 String zhongwen = request.getParameter("zhongwen"); zhongwen = new String(zhongwen.getBytes("iso8859-1"),"GBK"); 前提是你頁面編碼就是GBK,如果是utf-8,那上面那句代碼後面就改成utf-8