最近學(xué)習(xí)struts2是一個問題接著一個問題的遇到
剛解決了java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
接著就來最討厭的亂碼問題,我數(shù)據(jù)庫用的mysql,大家都知道mysql本省就有可能出現(xiàn)亂碼,加之現(xiàn)在跟struts2混合在一起,指不定會出現(xiàn)什么亂七八糟的編碼,這誰也說不清楚
整體思路那就是統(tǒng)一編碼(所有的內(nèi)容都采用同一個編碼)
大概從這幾個方面來排查
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ù)據(jù)庫和jsp中的編碼統(tǒng)一設(shè)置為utf-8即可