之前一直以為我們搞定了中文,所以一直沒(méi)有懷疑我們的配置,今天和立國(guó)發(fā)現(xiàn)一個(gè)問(wèn)題:
就是用ajax的方式去創(chuàng)建一個(gè)記錄,然后用jsp的方式去取數(shù)據(jù),出現(xiàn)亂碼;
但是用ajax的方式取此記錄,正常;
后來(lái)發(fā)現(xiàn),我們提交數(shù)據(jù)的方式,不管是ajax的,還是form表單提交,所使用的編碼通通沒(méi)有指定!!,雖然我們?cè)陧?yè)面上加上了<%@
page contentType="text/html;charset=UTF-8" language="java"
%>,但這一句主要是負(fù)責(zé)response的數(shù)據(jù)顯示;
查了資料后才發(fā)現(xiàn)需要加上:<%@ page  pageEncoding="utf-8"
%>;
而之前我們都沒(méi)有指定request的charset,所以按照servlet標(biāo)準(zhǔn),大多數(shù)web
server(Resin,Tomcat)默認(rèn)按照iso-8859-1來(lái)處理,而我們的數(shù)據(jù)庫(kù)是utf-8的,所以放到數(shù)據(jù)庫(kù)中的數(shù)據(jù)并不是utf-8的;所以用jsp顯示時(shí)候出錯(cuò);但用ajax的方式為什么沒(méi)出錯(cuò),還沒(méi)有搞明白;
解決方案:
1.ajax方式
#1:prototype.js [line707]contentType:
'application/x-www-form-urlencoded;charset=UTF-8',
#2:BaseController [line135] response.setCharacterEncoding("UTF-8");
以上兩行保證了ajax請(qǐng)求和相應(yīng)的方式一致,并都是utf8;
2.form表單方式;
#3:在jsp加上:<%@ page  pageEncoding="utf-8" %>;
#4:和<%@ page contentType="text/html;charset=utf-8" language="java"
%>
3.我在web。xml中加了一個(gè)encodefilter,保證了當(dāng)請(qǐng)求中沒(méi)有指定charset的時(shí)候,使用utf-8方式,所以以上#1和#3處的指定charset是可選的!!
請(qǐng)大家注意更新以上3個(gè)文件;prototype.js,BaseController
.java, web.xml

 

 

同意以上所述,更新3個(gè)文件:prototype.js,
BaseController.java, web.xml ,頂。