今天做struts2+hibernate+spring+mysql整合向數(shù)據(jù)庫保存中文時出現(xiàn)亂碼問題,在網(wǎng)上查資料好半天才解決。
首先查資料說是在struts.properties加入如下的key-value:struts.locale=zh_CN ;struts.i18n.encoding=gb2312-------向數(shù)據(jù)庫保存數(shù)據(jù)時出現(xiàn)亂碼,問題沒有解決;
然后再查說是將spring的配置文件<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"></property>寫成這樣---------再試驗保存數(shù)據(jù)還是亂碼,問題沒有解決;
然后再查說將mysql字符集設置為UTF-8----------再試驗保存數(shù)據(jù)還是亂碼,問題沒有解決;
然后再查說寫個filter
1 public class NewFilterDispatcher extends FilterDispatcher {
2 private static String encoding = "GBK";
3
4 public void init(FilterConfig filterConfig) throws ServletException {
5 super.init(filterConfig);
6 String encodingParam = filterConfig.getInitParameter("encoding");
7 if (encodingParam != null && encodingParam.trim().length() != 0) {
8 encoding = encodingParam;
9 }
10 }
11
12 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
13 throws IOException, ServletException {
14 request.setCharacterEncoding(encoding);
15 super.doFilter(request, response, chain);
16 }
17 }
web.xml
<filter>
<filter-name>struts</filter-name>
<filter-class>util.NewFilterDispatcher</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再試驗保存數(shù)據(jù),這次亂碼問題終于解決;