分析java中文亂碼的原因

 在java開發中都能遇到java中文亂碼的情況,怎樣才能夠恰當地選擇漢字編碼方式並正確地處理漢字的編碼呢?希望通過下面的總結的java中文亂碼解決方法對遇到過此類問題的朋友有所幫助。

首先,要想解決java中文亂碼問題就有必要了解一下什麼是字符,字符集,編碼的概念。
字符:是文字與符號的總稱,包括文字、圖形符號、數學符號等。
字符集:就是一組抽象字符的集合。字符集常常和一種具體的語言文字對應起來,該文字中的所有字符或者大部分常用字符就構成了該文字的字符集,比如英文字符集。繁體漢字字符集、日文漢字字符集等等。 
計算機要處理各種字符,就需要將字符和二進制內碼對應起來,這種對應關係就是字符編碼: 制定編碼首先要確定字符集,並將字符集內的字符排序,然後和二進制數字對應起來。根據字符集內字符的多少,會確定用幾個字節來編碼。
每種編碼都限定了一個明確的字符集合,叫做被編碼過的字符集(Coded Character Set),這是字符集的另外一個含義。通常所說的字符集大多是這個含義。

其次,要想解決java中文亂碼問題也得了解一下我們常用的編碼方式:
ASCII編碼是目前計算機中用得最廣泛的字符集及其編碼。
ISO8859-1可以表示的是西歐語言。看起來很單一爲什麼還在使用呢?,由於是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用ISO-8859-1編碼來表示。 而且在很多協議上,默認使用該編碼。
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。通常我們所遇到過多UTF-8這是Unicode編碼的實現方式,請一定要加以區分。
GB2312字集是簡體字集;BIG5字集是臺灣繁體字集;GBK字集是簡繁字集,包括了GB字集、BIG5字集和一些符號
GB18030是國家制定的一個強制性大字集標準,它的推出使漢字集有了一個統一的標準。
Linux系統默認使用的是ISO-8859-1編碼,Win32系統默認使用的是GB2312編碼。

再是,瞭解亂碼是怎麼產生的,如何解決java中文亂碼
字符在保存時的編碼格式如果和要顯示的編碼格式不一樣的話,就會出現亂碼問題。我們在做開發的時候,始終提倡開發環境編碼一致。如頁面編碼,數據庫編碼等。
Java在運行期一律以Unicode來存儲字符,這樣有利的支持了多語言環境。我們在開發過程中經常會用到文件讀取。Java讀文件的時候會用到系統默認的編碼來解碼文件。所以在用FileInputStream類讀取文件可以指定編碼讀取。
JSP頁面亂碼通常只要在頁面開始地方用下面代碼指定字符集編碼即可。如果還不行,那麼請用下面這句話來轉換 str=new String(str.getBytes("ISO-8859-1"),"頁面編碼方式"); 
JAVA在網絡傳輸中使用的編碼是"ISO-8859-1",故在輸出時需要進行轉化,如: 
String str=new String(str.getBytes("開發環境編碼"),"ISO-8859-1");
經過網絡編碼後的中文,要正確顯示在頁面上必須要用類似於
Stirng str=new String(str.getBytes("ISO-8859-1"),"開發環境編碼");這樣的方式來解碼

最後,爲了避免不必要的java中文亂碼,我們首先要從源頭做起。
什麼意思呢?這就是說,我們在項目開發中,首先要讓我們開發環境統一編碼。比如我用的開發環境是Eclipse+Tomcat5.0+SQLServer 2005。Eclipse的項目屬性中可以設置項目的編碼,可以針對JSP頁面的設置統一的編碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章