解決ajax get post方式提交中文引數亂碼問題

艾瑞克·邵發表於2018-11-13

 

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

 

相關文章