原来项目里只有hibernate,没有struts2和spring,用Filter处理汉字编码都正常,页面编码用的是GB18030,Filter的encoding也是GB18030。
但是最近打算引入struts和spring,发现编码的问题就出来了。不管用不用SetCharacterEncodingFilter,页面GB18030传进来的汉字在Action里面都是乱码,如果页面是utf-8就正常,也就是说SetCharacterEncodingFilter不生效。
如果是新工程那全部用UTF-8也无妨,但是原来的工程好多jsp,都从GB18030改成UTF-8工作量太大了。
请教解决办法!
刚刚试了下,如果页面和encoding都是GB18030,只有一种情况编码正常,就是在SetCharacterEncodingFilter设置编码的代码结束以后进入Struts2的拦截器之前的任何Filter里,request.getParameter("m")搞一下,到Action里就正常,没有这句就乱码,这个是什么原因?
解决了,在web.xml的org.apache.struts2.dispatcher.FilterDispatcher里给他指定编码就行了,貌似默认是按照UTF-8编码的。
分数给帮我解答上面这个问题的人,为什么在不指定FilterDispatcher的编码的时候,request.getParameter("m")搞一下也会正常?