编程环境:    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)过滤器    哪位大哥帮忙看下,这种问题如何解决,拜谢!

解决方案 »

  1.   

    Tomcat在GET时的固有问题,在tomcat配置中加上useBodyEncodingForURI="true",与URIEncoding是同一位置。
    记得要重新启动。
      

  2.   

    tomcat 编码设置成 URIEncoding="UTF-8"
      

  3.   

    看看前台页面中是否设置多个Encoding,只保留一个
      

  4.   

    在页面上也用UTF-8的,数据库也用UTF-8
      

  5.   

    楼主,一般我加上过滤器和tomcat加上URIEncoding就可以解决你说的问题,但是不知道你怎么的,就不行了,还有哪里出错了没呢?
      

  6.   

    把web。xml代码贴出来看看
      

  7.   

    不行就先转iso-8859-1,到后台再转回来咯
      

  8.   

    web.xml配置如下:   <filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter>
    <filter-name>struts-cleanup</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>*.html</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher> 
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher> 
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  9.   

    页面jsp中
    name = encodeURI(encodeURI(name));
    action中解码
    String name = URLDecoder.decode(user.getName(), "utf-8");
    我就是这么解决的
      

  10.   

    乱码问题:客户端提交中文,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之前
      

  11.   

    这种方法的确可以,但是由于浏览器不同,中文参数解析后的字符串的不一样,假如我按照你说的那样:
       页面jsp中
       url = encodeURI(encodeURI(url));
    然后在后台action中解码
       String name = URLDecoder.decode(user.getName(), "utf-8");
    但是还会存在问题:假如我把解析后的url拷贝到其它浏览器(比如火狐)再回车,还会是乱码!   最后我是参照百度对中文参数的做法,发现它好像是GB18030编码,然后我也把我的tomcat编码改成GB18030,所有的页面都改成GB18030编码,同时也对url进行编码,action中解码成utf-8,
      结果好像可以达到预期效果:将同一url拷贝至不同浏览器中访问,都不会乱码. 不知道这样处理会有问题不???
      

  12.   

    你要面对gb18030和utf-8不能互转的字符问题。