Java String 類型編碼轉換

String newStr = new String(oldStr.getBytes(), "UTF-8");  

java中的String類是按照unicode進行編碼的,當使用String(byte[] bytes, String encoding)構造字符串時,encoding所指的是bytes中的數據是按照那種方式編碼的,而不是最後產生的String是什麼編碼方式,換句話說,是讓系統把bytes中的數據由encoding編碼方式轉換成unicode編碼。若是不指明,bytes的編碼方式將由jdk根據操做系統決定。 

        當咱們從文件中讀數據時,最好使用InputStream方式,而後採用String(byte[] bytes, String encoding)指明文件的編碼方式。不要使用Reader方式,由於Reader方式會自動根據jdk指明的編碼方式把文件內容轉換成unicode 編碼。 

        當咱們從數據庫中讀文本數據時,採用ResultSet.getBytes()方法取得字節數組,一樣採用帶編碼方式的字符串構造方法便可。 

ResultSet rs; 
bytep[] bytes = rs.getBytes(); 
String str = new String(bytes, "gb2312"); 

不要採起下面的步驟。 

ResultSet rs; 
String str = rs.getString(); 
str = new String(str.getBytes("iso8859-1"), "gb2312"); 

        這種編碼轉換方式效率底。之因此這麼作的緣由是,ResultSet在getString()方法執行時,默認數據庫裏的數據編碼方式爲 iso8859-1。系統會把數據依照iso8859-1的編碼方式轉換成unicode。使用str.getBytes("iso8859-1")把數據還原,而後利用new String(bytes, "gb2312")把數據從gb2312轉換成unicode,中間多了好多步驟。 

        從HttpRequest中讀參數時,利用reqeust.setCharacterEncoding()方法設置編碼方式,讀出的內容就是正確的了。 
轉:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.htmlhtml

相關文章
相關標籤/搜索