如果表单中有中文,提交后会出现乱码,原因是数据以ISO-8859-1 的编码方式传输数据,程序从网页取到的数据就是乱码了。
要解决这个问题,需要在web.xml 配置文件中添加一个过滤器,来设置编码方式为gbk. 这个过滤器实际是Spring 框架的一个类,注意这个过滤器必须在struts 过滤器之前,因为必须在struts 处理网页之前处理编码的问题。
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另外,数据库的编码一般设为utf8, 否则取出数据时可能后出现乱码。