前提:jsp已设置为utf-8,struts2配置为utf-8.
今天碰到个乱码问题,form表单post提交中文没有任何问题,get提交到服务器确实乱码。在网上了解了下,这个应该很多人碰到。
首先说明下,struts2设置为utf-8的话,相当于response.setCharacterEncoding("UTF-8"),对HTTP请求的body进行编码,但是get请求的数据是直接在URL中,通过配置struts2配置为utf-8或CharacterEncodingFilter拦截器都不会对URL进行转换。
解决方法:(用的是Tomcat服务器,Jboss等其他web服务器类似)打开tomcat的conf/server.xml,找到下面这行配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
增加属性URIEncoding="UTF-8",效果如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
重启服务器即可。希望对遇到类似问题的同学有所帮助。