日期:2014-05-18  浏览次数:20700 次

spring字符编码器为什么没起到作用啊?
本人是小小学生一枚,刚开始做了个整合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");
Spring UTF-8 Filter 编码

------解决方案--------------------
filter里加上
<init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>

这个过滤器写在web.xml的最上面
------解决方案--------------------
你的过滤没生效吧
------解决方案--------------------
可以考虑用struts2中的编码设置,不过注意该编码设置只对post请求有效,对get请求是没用的哦。


你用那个spring提供的fiter,也要考虑下你的请求是否是post请求还是get请求,注意下吧..
------解决方案--------------------
使用过滤器注意几点 1.确认是先走的字符集 filter还是 struts的Filter 顺序别乱
2.post请求使用过滤器是没有问题的,
3.get请求有没有问题我没测试过,但是可以设置中间件的编码方式
------解决方案--------------------
还有一个是 使用正文提交(非在url ?XXX=XX&XX=XX) 但是用get提交方式 这个有点乱了。