最近在工作中遇到,使用ajax get方式提交中文参数的时候出现乱码,通过上网搜索,总结出比较简单的两种解决方案:
第一种,由于tomcat默认的字符集是ISO-8859-1,修改Tomcat中的server.xml,在port为8080(也可以是不同的端口)的Connector中加入属性: URIEncoding="UTF-8" 就可以了。
这样在ajax的url中参数,或type为get的时候在data中的参数,在后台获取都不会再后台出现乱码了。不用在后台使用转码的代码都行了。
第二种,对需要传递的中文参数先进行两次转码:
1.js文件中使用encodeURI()方法。
1 //检查版本名称是否已经存在
2 function checkVersionName() {
3 var name = $('#name').val();
4 //var re = /^[1-9]+[0-9]*]*$/;
5 /* if (!re.test(resourceId)) {
6 alert("ID请输入数字");
7 $('#resourceId').val('');
8 return false;
9 } */
10 var url = "${ctx}/mkt/appVersion/list?name=" + encodeURI(encodeURI(name));
11 $.ajax({
12 cache:false,
13 type: "POST",
14 async: false,
15 url: url,
16 dataType: "json",
17 contentType:'application/x-www-form-urlencoded; charset=UTF-8',
18 success: function (data) {
19 if (data.page.count > 0) {
20 top.$.jBox.info("版本名称:" + name + "已经存在");
21 $('#name').val('')
22 }
23 }
24 });
25 }
有的时候是这样(我遇到了):var url = "<%=bathPath%>/department/list?keyword=" + encodeURI(keyword);
2.在后台中对传递的参数进行URLDecoder解码
String keyword= URLDecoder.decode(request.getParameter("keyword"),"UTF-8");
|