本人是小小学生一枚,刚开始做了个整合SS2H的小信息系统,为什么下面的这个过滤器明明写了,在strust2的Action中获取的request里从页面传来的中文参数还需要我自己重新编码才不是乱码呢?这样的话下面这个过滤器的作用何在呢?这个过滤器我是放在StrutsPrepareAndExecuteFilter之前之后都没什么变化,我很纳闷啊,请各位大神指教啊,小辈才疏学浅,洗耳恭听。
<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> 
自己重新编码:
        keti=new String(keti.getBytes("iso-8859-1"),"UTF-8");
        ketiname=new String(ketiname.getBytes("iso-8859-1"),"UTF-8");
SpringUTF-8Filter编码

解决方案 »

  1.   

    filter里加上
    <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>这个过滤器写在web.xml的最上面
      

  2.   

    可以考虑用struts2中的编码设置,不过注意该编码设置只对post请求有效,对get请求是没用的哦。
    你用那个spring提供的fiter,也要考虑下你的请求是否是post请求还是get请求,注意下吧..
      

  3.   

    使用过滤器注意几点 1.确认是先走的字符集 filter还是 struts的Filter 顺序别乱
    2.post请求使用过滤器是没有问题的,
    3.get请求有没有问题我没测试过,但是可以设置中间件的编码方式
      

  4.   

    还有一个是 使用正文提交(非在url ?XXX=XX&XX=XX) 但是用get提交方式 这个有点乱了。
      

  5.   


    多谢,问题解决了,确实是提交方式必须是POST,又学到了点东西。