加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax乱码问题

发布时间:2020-12-15 21:51:12 所属栏目:百科 来源:网络整理
导读: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 userName

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读