程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 應對Java中文亂碼的妙招

應對Java中文亂碼的妙招

編輯:關於JAVA

在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頁面的設置統一的編碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved