日期:2014-05-20  浏览次数:20818 次

请教:Spring+strut1 乱码 问题 filter.CharacterEncodingFilter?
我用spring+struts1+bibernate 所有文件都是utf-8编码 页面用html+js,页面传到后台的数据都是乱码,

web.xml中是这样配置的  
 <filter>
  <filter-name>Spring character encoding filter</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>
  <init-param> 
<param-name>forceEncoding </param-name> 
<param-value>true </param-value> 
</init-param> 
  </filter>
  <filter-mapping>
  <filter-name>Spring character encoding filter</filter-name>
  <url-pattern>*.do</url-pattern>
  </filter-mapping>


没什么问题吧?好像不起作用


页面拼接url是这样的
var urlEditDetail = 'orgRole.do?action=editrole';
  var id = postdata.编号;
  var name = postdata.名称;
 
  urlEditDetail += "&id="+id;
  urlEditDetail += "&name="+name;
   

java 文件 配置文件 js文件 html文件都是用utf-8编码 ,在action中的form表单中数据都是乱码。

这该怎么办?







------解决方案--------------------
URLEncoder编码,后台URLDecoder解码
------解决方案--------------------
这个是我自己写的 没什么乱码的问题
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
------解决方案--------------------
是在不行,自己写一个过滤器对所有的jsp请求过滤。
------解决方案--------------------
自己写了一个过滤器,最关键就一句话request.setCharacterEncoding(encoding);好像没出什么问题啊
------解决方案--------------------
探讨

form里的每个变量都要 URLDecoder 这也太麻烦了啊 如何才能让过滤器起作用啊

------解决方案--------------------
编码过滤器只对get提交方式有用,对post方式提交没用,需要手动转换编码
------解决方案--------------------
看一下数据库的编码是不是utf-8的