postSend("<%=basePath%>havePowerCreateRole.do?funOptType="+encodeURI("<%=createRole%>"));
加上encodeURI编码,后台如果还乱码用URLDecoder.decode

解决方案 »

  1.   

    不要在queryString中传递中文,问题太多了,服务器端需要配置或者转码,而且不一定能解决,就是浏览器也能设置接受参数的编码,所以这个问题较真一点说可以说是无解的。
    参数最好传递编码,只用英文和数字最好。
      

  2.   

    jsp中变量用encode编码成utf8,action用decode解
      

  3.   


    你的这个思路很棒,我用了两次encodeURI()就可以了,这样:encodeURI(encodeURI("<%=createRole%>"))。但我不明白:
    1、为什么要encodeURI
    2、为什么要2次encodeURI包装<%=createRole%>才能调用?
      

  4.   


    你的这个思路很棒,我用了两次encodeURI()就可以了,这样:encodeURI(encodeURI("<%=createRole%>"))。
    刚刚说错了:
    但我不明白:
    1、为什么要encodeURI
    2、为什么要2次encodeURI包装<%=createRole%>才能,然后后台URIDecode.decode()才能获取正确的值?
      

  5.   

    两次Urlecode是解决js乱码的最后方案,也是提倡的
      

  6.   

    楼主也可以设置过滤器<!-- 字符编码过滤器(防止乱码)开始   -->  
      <filter>  
            <filter-name>Set Character 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>  
            <init-param>  
                <param-name>forceEncoding</param-name>  
                <param-value>true</param-value>  
            </init-param>  
        </filter>  
        <filter-mapping>  
            <filter-name>Set Character Encoding</filter-name>  
            <url-pattern>/*</url-pattern>  
        </filter-mapping> 
        <!-- 字符编码过滤器(防止乱码)结束   -->
      

  7.   


    兄弟,你仔细看看我的提问,我提问中,提到了,我已经设置了xml写了字符编码过滤器
      

  8.   


    谢谢,原来的问题已解决,
    我只是不明白,为什么我设置了spring字符过滤器,还是乱码
      

  9.   


    你的这个思路很棒,我用了两次encodeURI()就可以了,这样:encodeURI(encodeURI("<%=createRole%>"))。
    刚刚说错了:
    但我不明白:
    1、为什么要encodeURI
    2、为什么要2次encodeURI包装<%=createRole%>才能,然后后台URIDecode.decode()才能获取正确的值?
    因为URIDecode.decode()会解码一次,,然后服务器会自己再解码一次。