最近學習struts2是一個問題接著一個問題的遇到
剛解決了java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
接著就來最討厭的亂碼問題,我數據庫用的mysql,大家都知道mysql本省就有可能出現亂碼,加之現在跟struts2混合在一起,指不定會出現什么亂七八糟的編碼,這誰也說不清楚
整體思路那就是統一編碼(所有的內容都采用同一個編碼)
大概從這幾個方面來排查
a) 首先確認mysql的字符編碼,他默認為拉丁文,這里我修改為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) 習慣性的加上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默認國際化的編碼格式
<constant name="struts.i18n.encoding" value="gbk"></constant>
|
到此編碼應該已經統一為gbk了,看看結果吧
其實最簡單的放法就是把數據庫和jsp中的編碼統一設置為utf-8即可