當(dāng)使用JSP頁(yè)面將中文數(shù)據(jù)添加到MySql數(shù)據(jù)庫(kù)中的時(shí)候發(fā)現(xiàn)變?yōu)閬y碼,或者從mysql中讀取中文的時(shí)候出現(xiàn)亂碼,這些問(wèn)題根源都是由于字符編碼不一致造成的。要知道病源是什么我們才能對(duì)癥下藥,所以我將問(wèn)題產(chǎn)生的過(guò)程簡(jiǎn)單描述一下(如有不對(duì)望高人賜教)
我們以一個(gè)從form表單讀取數(shù)據(jù)并寫(xiě)入mysql數(shù)據(jù)庫(kù)的例子來(lái)講解;
HTML頁(yè)面參數(shù)—(以瀏覽器的編碼方式發(fā)送)—》JSP頁(yè)面—(以JSP定義的編碼方式被編譯)—》被JSP引擎編譯為*.class文件——》在JSP容器中運(yùn)行——》傳遞給Mysql數(shù)據(jù)庫(kù)—(以數(shù)據(jù)庫(kù)的編碼方式讀取數(shù)據(jù)并存儲(chǔ))—》讀取Mysql—(以數(shù)據(jù)庫(kù)的編碼方式讀取)—》JSP頁(yè)面接受后在瀏覽器中顯示(以瀏覽器編碼方式解碼顯示);
注意:這里的“瀏覽器編碼”“JSP頁(yè)面編碼”“JSP頁(yè)面輸出編碼”“JSP頁(yè)面輸入編碼”“數(shù)據(jù)庫(kù)的編碼”可能存在潛在的不一直,當(dāng)它們中的任意一個(gè)不相同的時(shí)候就會(huì)出現(xiàn)亂碼;就好像傳話游戲一樣,張三要把話傳給李四,李四把他聽(tīng)到的傳給王五,要讓王五知道張三說(shuō)的什么就需要他們?nèi)齻€(gè)人使用的相同語(yǔ)言,如果李四是個(gè)火星人,他當(dāng)然聽(tīng)不懂張三說(shuō)什么,然后他還不厚道的對(duì)王五說(shuō)火星話(亂碼),結(jié)果王五就只能聽(tīng)到亂碼了。(比喻比較汗~~^_^!)
jsp中文亂碼 jsp mysql 亂碼要servlet里面支持中文的方法:
在dopost或者doget的第一句加上:
request.setCharacterEncoding("GB2312");
response.setCharacterEncoding("GB2312");
jsp亂碼問(wèn)題在jsp里面就把
復(fù)制代碼 代碼如下:
%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
里設(shè)置成charset=gb2312
jsp頁(yè)面亂碼 jsp頁(yè)面中文亂碼 如果這樣還不行,就只有在取出中文后(getParameter)強(qiáng)制轉(zhuǎn)換了:
String str=new String(request.getParameter("text").getBytes("ISO-8859-1"),"GB2312");
很不錯(cuò)的方法,因?yàn)樵趈ava里面,jsp數(shù)據(jù)庫(kù)亂碼是個(gè)大問(wèn)題,jsp出現(xiàn)亂碼這些一定要銘記
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- JSP MySQL插入數(shù)據(jù)時(shí)出現(xiàn)中文亂碼問(wèn)題的解決方法
- jsp和servlet操作mysql中文亂碼問(wèn)題的解決辦法
- JSP+ MySQL中文亂碼問(wèn)題post提交亂碼解決方案
- 解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問(wèn)題