好久没有写博客了,之前在写一个小小项目遇到了菜鸟级的问题。当然了,作为自学者的我遇到这种菜鸟级的问题还是应该的。就是中文乱码的问题,这里我将讲的是struts2+Ajax时出现的中文乱码。
之前的博客里面写了一个struts2 + Ajax的实现,里面有些问题而且解决方案也不是很专业甚至感觉暴力。呵呵。好了,还是进入正题吧。今天搞的小项目是SSH整合的项目,里面涉及了表单以Ajax方式提交。
我在jsp中的代码是这样的
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
在struts.xml文件中进行了国际化的处理
<constant name="struts.i18n.encoding" value="utf-8"/>
在web.xml文件中进行了过滤器,我用的是spring提供的字符串过滤的方式。当然了,本可以自己写个拦截器进行拦截的,但是还是用现成提供的方法吧
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在理论上来说应该没有问题才对,无论是在过滤器里还是在struts.xml中我都进行编码方式的规定。但是依然乱码,而且这个问题也不是仅仅我一个人遇到,其他一起自学的哥们也遇到了。无意间在网上看到了这样的一种说法:tomcat接收默认编码是iso-8859-1,于是修改了tomcat中conf文件下的server.xml文件
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
之后果然ok啦。。。