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

 

 

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