解决ajax get post方式提交中文参数乱码问题

本文介绍了解决AJAX GET请求中中文参数乱码的两种有效方法:一是修改Tomcat配置,设置URIEncoding为UTF-8;二是使用JavaScript encodeURI方法编码并结合后台URLDecoder解码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

最近在工作中遇到,使用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");

 

转载于:https://www.cnblogs.com/eric-shao/p/9953543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值