我用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表单中数据都是乱码。这该怎么办?

解决方案 »

  1.   

    URLEncoder编码,后台URLDecoder解码
      

  2.   

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

  3.   

    这个是我自己写的 没什么乱码的问题
    <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>
      

  4.   

    是在不行,自己写一个过滤器对所有的jsp请求过滤。
      

  5.   

    自己写了一个过滤器,最关键就一句话request.setCharacterEncoding(encoding);好像没出什么问题啊
      

  6.   


    不要用js拼url的方式提交。action写在 form的属性里面,用post方式提交,filter就可以干预。
    get方式提交的除了用URLEncoder编码外无法干预,是由浏览器决定的!
      

  7.   

    比如这个方法:
    {
    onclickSubmit: function(rp_ge, postdata) {
    var urlEditDetail = 'orgGroup.do?action=deletegroup&userid='
    + $.cookie('userid');                
         var id = $("#mygrid").getGridParam("selrow");
         urlEditDetail += "&id="+id;
         urlEditDetail += "&calltime="+ _getCurtimestr();                
            rp_ge.url = urlEditDetail;
         },
         reloadAfterSubmit:true,
         closeOnEscape:true
    }
    如何才能改成post提交啊
      

  8.   

    已经有了一个过滤器啊!public class ControllerActionServlet extends ActionServlet {
    protected void service(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");    
    this.process(request, response);
    JSONObject jsonobject = (JSONObject) request.getAttribute("JSONObject");
    if (jsonobject != null) {
    response.getWriter().print(jsonobject);
    }
    JSONArray jsonarray = (JSONArray) request.getAttribute("JSONArray");
    if (jsonarray != null) {
    response.getWriter().print(jsonarray);
    } }}
      

  9.   

    编码过滤器只对get提交方式有用,对post方式提交没用,需要手动转换编码
      

  10.   

    页面中没有form 只是用js拼接 url、提交  ,而且页面用js不是我决定的 而是领导要求 ,改成了post方式提交 还是不行啊
      

  11.   

    看一下数据库的编码是不是utf-8的
      

  12.   

    <filter-mapping>
         <filter-name>Spring character encoding filter</filter-name>
         <url-pattern>/*</url-pattern>
       </filter-mapping>
      <filter-mapping>