zoukankan      html  css  js  c++  java
  • Ajax乱码问题

    Ajax中文乱码问题

     

    1.js代码

    var userName=$("#userName").val();
    var url = "user/login.action?userName=" + encodeURI(encodeURI(userName));
    //或者
    var url =encodeURI(encodeURI( "user/login.action?userName=" + userName));

     2.java代码

    String userNameStr=URLDecoder.decode(request.getParameter("userName"), "UTF-8");
    
    这样就可以了,也可以遍历所有的值:
    for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
            String name = (String) e.nextElement();
            String str = request.getParameter(name);
            String value = java.net.URLDecoder.decode(str, "UTF-8");
    	System.out.println(value);
    }
     注意事项:

     

     

    1.连续两次调用ecodeURI的原因:是因 Java 中的 request.getParameter(String) 方法会行一次 URI 的解码过程,内置的解码过程会致乱

     URI编码两次后, request.getParameter(String) 函数得到的是原信息 URI 编码一次的内容。接着用 java.net.URLDecoder.decode(String str,String codename) 方法,将已经编码 URI 转换成原文。

     

     

    2.在js里面可以alert(url),发现编码之后的格式我们已经“不认识”了(如果参数值是中文的);在java里面可以先获取,发现我们不认识,但是应该含有“%”这样的字样,这是unicode编码格式的;java.net.URLDecoder.decode是解码方法,和编码相对。就如同加密解密一样。

     

     

    3..并不是所有的请求都要转码,如果是非ajax的请求,可以在web.xml里面添加如下代码使用spring的过滤器进行编码

    <!-- 字符编码 filter 统一使用 "UTF-8"(文件/请求) -->
    <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>
    	<init-param>
    		<param-name>forceEncoding</param-name>
    		<param-value>true</param-value>
    	</init-param>
    </filter>
    <filter-mapping>
    	<filter-name>encodingFilter</filter-name>
    	<url-pattern>/*</url-pattern>
    </filter-mapping>
     
  • 相关阅读:
    我谈编程语言竞争
    从基础学起----xuld版高手成长手记[1]
    自己动手开发语言.笔记@2014-1-13
    删除 QQ 最新版右键菜单 通过QQ发送文件到手机
    客观评价C#的优点和缺点
    一个会做你就是高手的问题
    计划开发的语言及一些细节求吐槽
    面向接口设计思想
    计划添加的复杂语法
    面向对象中的设计陷阱
  • 原文地址:https://www.cnblogs.com/pengyan5945/p/5218368.html
Copyright © 2011-2022 走看看