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");
------解决方案--------------------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提交方式 这个有点乱了。