SQL Server中文亂碼問題的解決
SQL Server中文亂碼問題著實讓我們頭疼,不過沒關(guān)系,下面就教您一個處理SQL Server中文亂碼問題的方法,希望對您能有所啟迪。
在JSP頁面中,我們通過以下的方法解決SQL Server中文亂碼問題,首先,在html的head標簽內(nèi)加入以下meta信息:
<meta http-equiv=Content-Type content="text/html; charset=gbk">
其作用是告訴客戶端瀏覽器,這個HTML為GBK編碼文件。
在JSP中加入以下的一句編譯指令,定義JSP程序使用字符集為GBK:
<%@ page contentType="text/html;charset=gbk" %>
這樣,保證了JSP服務(wù)器引擎將會把JSP的輸出以GBK編碼的形式輸出。
但是在表單提交或URL傳參數(shù)值時依然是按照Web容器在其內(nèi)部默認的字符編碼格式ISO 8859-1來進行處理的。同時,幾乎所有的瀏覽器在傳遞參數(shù)時都是默認以UTF-8的方式來傳遞參數(shù)的。所以,雖然我們的Java源文件在出入口的地方指定了正確的編碼方式,但其在容器內(nèi)部運行時還是以ISO 8859-1來處理的,這樣導(dǎo)致在提交的表單中若有中文字符,根據(jù)上文分析,在存入數(shù)據(jù)庫是使用的是ISO 8859-1, 而MS SQL Sever 2000數(shù)據(jù)庫默認使用的是GBK編碼,這樣出現(xiàn)的結(jié)果就是存到數(shù)據(jù)庫中的數(shù)據(jù)因編碼不同而出現(xiàn)亂碼現(xiàn)象。
在這種情況下,我們的解決辦法就是通過編碼轉(zhuǎn)換,使存放到數(shù)據(jù)庫的數(shù)據(jù)編碼格式與數(shù)據(jù)庫的內(nèi)部編碼格式統(tǒng)一,即為GBK編碼格式。
即將寫入數(shù)據(jù)庫的中文轉(zhuǎn)換為從ISO 8859-1編碼格式,實現(xiàn)方法如下:
String str=new String(dbstr.getBytes(“ISO8859-1”),”GBK”);
讀出數(shù)據(jù)庫的中文將其從GBK編碼格式轉(zhuǎn)換為ISO 8859-1編碼格式,實現(xiàn)方法如下:
String str=new String(dbstr.getBytes(”GBK”) ,“ISO8859-1”);
【編輯推薦】