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