自己做測(cè)試的時(shí)候用到jsp/servlet 向mysql中寫(xiě)數(shù)據(jù),但是中文總是亂碼,今早糾結(jié)了半天才搞定,分享給大家我的解決辦法
首先看是從什么地方開(kāi)始出現(xiàn)的亂碼,只要統(tǒng)一編碼,就不會(huì)出現(xiàn)亂碼,下面以u(píng)ft-8(個(gè)人認(rèn)為最好)為例,詳細(xì)說(shuō)明:
1、如果亂碼是從jsp頁(yè)面出現(xiàn)的,jsp頭部頁(yè)面加上:
在head標(biāo)簽中加上標(biāo)簽。
2、如果亂碼是在servlet中出現(xiàn)的,則有兩種方法:
一種是在每個(gè)servlet中doget和doPost方法頭部加上
request.setCharacterEncoding(“UTF-8″);
第二種最保險(xiǎn),一勞永逸,是專(zhuān)門(mén)寫(xiě)一個(gè)過(guò)濾器類(lèi),也稱(chēng)國(guó)際化,類(lèi)名為SetCharacterEncodingFilter內(nèi)容如下


然后在web-inf的web.xml中加上如下代碼:

然后在web-inf的web.xml中加上如下代碼:a這樣就搞定了
3、如果還是有亂碼,就是mysql數(shù)據(jù)庫(kù)的問(wèn)題了
1)保證建立數(shù)據(jù)庫(kù)的時(shí)候數(shù)據(jù)庫(kù)編碼選擇的是utf-8,最好在每個(gè)表中也指定編碼格式,mysql默認(rèn)是latin1
2)如果mysql版本是4.x以上,數(shù)據(jù)庫(kù)中還是出現(xiàn)亂碼,有以下兩種解決方法:
一種是在連接數(shù)據(jù)庫(kù)的代碼中指定編碼方式:
String url = “jdbc:mysql://localhost:3306/test2?autoR
如果還是不行的話就是用
show variables like ‘collation_%';
這個(gè)命令來(lái)查看默認(rèn)字符集,如果不是utf-8的話在my.ini(windows)或者是my.cnf(linux)將相應(yīng)的編碼修改成utf8之后重啟mysql服務(wù)器就ok了
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注