最近在工作中遇到,使用ajax get方式提交中文參數的時候出現亂碼,通過上網搜索,總結出比較簡單的兩種解決方案:
第一種,由於tomcat默認的字符集是ISO-8859-1,修改Tomcat中的server.xml,在port為8080(也可以是不同的端口)的Connector中加入屬性: URIEncoding="UTF-8" 就可以了。
這樣在ajax的url中參數,或type為get的時候在data中的參數,在后台獲取都不會再后台出現亂碼了。不用在后台使用轉碼的代碼都行了。
第二種,對需要傳遞的中文參數先進行兩次轉碼:
1.js文件中使用encodeURI()方法。
var url = "<%=bathPath%>/department/list?keyword=" + encodeURI(encodeURI(keyword));
有的時候是這樣(我遇到了):var url = "<%=bathPath%>/department/list?keyword=" + encodeURI(keyword);
2.在后台中對傳遞的參數進行URLDecoder解碼
String keyword= URLDecoder.decode(request.getParameter("keyword"),"UTF-8");