最近學習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即可