亂碼原因:
在傳參的過程中,由於參數的編碼(如UTF-8、GBK等)不確定,以至於我們在后台接參的時候不知道要接受的參數是哪種編碼格式,從而出現后台接收的參數出現亂碼。
解決辦法:
在前端傳參的時候先將參數進行編碼,統一將多字節的參數轉為Ascii字符串,然后由后台進行解碼並指定你需要的編碼,這樣就能得到你想要的不亂碼的參數了。
示例:
前端:
var str = encodeURI(encodeURI("我不想亂碼")); //轉碼過后的中文參數
var url = "/vehicleinfoAction!verifyPassed.action?str="+str; //上面參數傳入后台
后台:
String str=request.getParameter("str");
str= java.net.URLDecoder.decode(str,"UTF-8"); //這句話一定要,因為如果不寫的,將會得到一個亂碼的參數,這一定不是你想看到的。
注:這里前端出現了兩次轉碼,解釋一下,因為將參數傳入后台的時候我們的服務器tomcat會自動進行一次解碼,而我們在后台接參的時候會手動解碼一次,所以前端會進行兩次轉碼。