最近學(xué)習(xí)struts2是一個(gè)問題接著一個(gè)問題的遇到
剛解決了java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
接著就來最討厭的亂碼問題,我數(shù)據(jù)庫用的mysql,大家都知道mysql本省就有可能出現(xiàn)亂碼,加之現(xiàn)在跟struts2混合在一起,指不定會(huì)出現(xiàn)什么亂七八糟的編碼,這誰也說不清楚
整體思路那就是統(tǒng)一編碼(所有的內(nèi)容都采用同一個(gè)編碼)
大概從這幾個(gè)方面來排查
a) 首先確認(rèn)mysql的字符編碼,他默認(rèn)為拉丁文,這里我修改為gbk
b) 在jsp頁面中明確指明編碼類型
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
上面的意思是指定tomcat的編碼為gbk
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
下面的意思是指定web瀏覽器的編碼為gbk
|
c) 習(xí)慣性的加上spring的字符過濾器
在web.xml中添加過濾器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
d) 最后別忘了在struts.xml或struts.properties中覆蓋struts2默認(rèn)國際化的編碼格式
<constant name="struts.i18n.encoding" value="gbk"></constant>
|
到此編碼應(yīng)該已經(jīng)統(tǒng)一為gbk了,看看結(jié)果吧
其實(shí)最簡單的放法就是把數(shù)據(jù)庫和jsp中的編碼統(tǒng)一設(shè)置為utf-8即可