日期:2014-05-20  浏览次数:20743 次

struts2中文参数乱码
编程环境: tomcat6 + struts2.2.3  
  页面编码: utf-8
  struts.i18n.encoding = UTF-8

  问题:当我的url带中文参数时【如:http://localhost:8088/web_project/s?param=高级管理】时,如果是超链接点击过去,则后台获取参数是不会乱码,如果我在地址栏回车,则此时后台获取参数时,则出现乱码
  以下方法都行不通,例如:
  (1)在tomcat中配置中加上URIEncoding="UTF-8"
  (2)过滤器

  哪位大哥帮忙看下,这种问题如何解决,拜谢!

------解决方案--------------------
Tomcat在GET时的固有问题,在tomcat配置中加上useBodyEncodingForURI="true",与URIEncoding是同一位置。
记得要重新启动。
------解决方案--------------------
在后台将乱码转码、
------解决方案--------------------
看下JSP编码,是不是统一
------解决方案--------------------
tomcat 编码设置成 URIEncoding="UTF-8"
------解决方案--------------------
看看前台页面中是否设置多个Encoding,只保留一个
------解决方案--------------------
在页面上也用UTF-8的,数据库也用UTF-8
------解决方案--------------------
楼主,一般我加上过滤器和tomcat加上URIEncoding就可以解决你说的问题,但是不知道你怎么的,就不行了,还有哪里出错了没呢?
------解决方案--------------------
把web。xml代码贴出来看看

------解决方案--------------------
不行就先转iso-8859-1,到后台再转回来咯
------解决方案--------------------
页面jsp中
name = encodeURI(encodeURI(name));
action中解码
String name = URLDecoder.decode(user.getName(), "utf-8");
我就是这么解决的
------解决方案--------------------
乱码问题:客户端提交中文,servlet中获取的是乱码:
a:如果是get方式,在tomcat中,在conf/server.xml文件中8080端口的connector元素增加URIEncoding="utf-8"
b:如果是post方式,在servlet中,request.setcharactorEncoding("utf-8");放在request.getparameter之前
servlet相应中文,客户端显示乱码:response.setCharactorEncoding("utf-8");该代码要放在
response.getWriter之前
------解决方案--------------------
你要面对gb18030和utf-8不能互转的字符问题。