最近学习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即可