jsp页面 用<a href="temp.action?cargoName=${cargoName}">向action传递字符参数(中文的)会出现乱码,要怎么弄才能不乱码?急求高手指导!

解决方案 »

  1.   

    在struts.properties里面把编码改下看行不!
      

  2.   

    写个Filter、interceptor乱码就搞定了!
    Filter:HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse resp = (HttpServletResponse) response;
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");chain.doFilter(request, response);
    如你你嫌Filter、interceptor麻烦,不想写也行,没关系!直接使用Spring提供的类,不过不知道你的项目中是否用到了Spring啊, 呵呵...
    在web.xml中配置
     <!-- 使用Spring中的过滤器解决中文乱码问题 -->
       <filter>
       <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
       </filter-mapping>
      

  3.   

    如果传递的汉字是偶数的话只需要在服务器端编码就可以了!!String s = new String( a.getBytes("ISO_8859_1"),"gbk");a是你通过浏览器传递来的参数。
    如果汉字是奇数的话需要在客户端进行编码和在服务器端进行编码。
    客户端:<a href="" onclick="encodeURI(this.href)">URL</a> 最好客户端和服务器端都进行一下编码。
      

  4.   

    如果是通过get传参的话汉字需要进行编码,post不需要!!如果你不想进行转码的话可以将get传参改成post传参也可以!!
      

  5.   

    URL传值一般不建议传中文
    如果一定要传中文的话,可以先用encodeURI转码,后台再用.getBytes()转就OK了
    或者直接在struts.xml中设置<constant name="struts.i18n.encoding"     value="GBK" />
    或者设置Filter
      

  6.   

    我的项目没用到Spring,写个Filter、interceptor乱码就搞定了!
    请问怎么写和配置啊?能说清楚点吗,谢谢了
      

  7.   


    Filter的代码我已经发了,你创建一个filter,把代码写在doFilter()中!
    web.xml配置如下:
     <filter>  
           <filter-name>encodingFilter</filter-name>  
           <filter-class>com.joye.filter.CharacterSetEncodingFilter</filter-class>  
      </filter> 
      
      <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
     </filter-mapping>
    以上的配置,不需要我多说吧!
    我这里配的是以.do请求的进行转码,.jsp请求不进行转码!
    如果你要把.do和.jsp的请求都进行转码,那么你就写成/*
    表示对所有的请求转码,也就是所有的请求都会去执行过滤器内的代码!
      

  8.   

    不好意思,不是很明白,我最后用六楼的转码方法实现了,Filter我按你那样配置好像不行,不知道是不是我弄错了,还是很感谢,如果可以的话麻烦你再说具体点哈,谢啦