在本地開發環境中,一切正常,部署到伺服器後(windows 2003 +
tomcat)含有中文的查詢和表單送出都有亂碼,從以下幾個方面檢查并解決了問題:
1、将所有jsp、js、css檔案預設編碼改為了utf-8,未解決問題。
2、struts2的配置檔案中加入了節點:<constant name="struts.i18n.encoding" value="utf-8" /> ,未解決問題。
3、web.xml中做如下确認和修改,未解決問題。
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>org.springframework.web.filter.characterencodingfilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<param-name>forceencoding</param-name>
<param-value>true</param-value>
</filter>
4、spring 的配置檔案中,将beans.xml做如下修改(紅字部分),解決問題。
<bean id="datasource"
class="org.springframework.jdbc.datasource.drivermanagerdatasource">
<property name="driverclassname" value="com.mysql.jdbc.driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db?useunicode=true&amp;characterencoding=utf-8"
/>
<property name="username" value="db" />
<property name="password" value="db" />
</bean>
解決後分析了下,應該是伺服器端mysql的預設字元集和本地開環境不一緻造成的,是以前三步的解決辦法不能解決這個問題,不過一個項目中一定要保證前端到底層的編碼一緻,不然會很麻煩。