jquery中文亂碼
escape()除了 ASCII 字母、數字和特定的符號外,對傳進來的字元串全部進行轉義編碼,
因此如果想對URL編碼,最好不要使用此方法。 而encodeURI() 用於編碼整個URI,因為URI中的合法字元都不會被編碼轉換的。 encodeURIComponent方法在編碼單個URIComponent(指請求參數)應當是最常用的,它可以講參數中的中文、特殊字元進行轉義,而不會影響整個URL
當通過jquery傳遞中文參數時,頁面出現了亂碼,這時需要對參數進行處理:
javascript中代碼:[javascript] view plaincopy- varsubCompanyName=encodeURIComponent(encodeURIComponent($("#subCompanyName").val()));
- window.open("../powerStation/doSubAddForward.do?subCompanyId="+subCompanyId+"&subCompanyName="+subCompanyName,"添加明細","width_=620,height=360,left=200,location=no");
注意對參數subCompanyName進行了兩次encodeURIComponent包裝。
java代碼中:
[java] view plaincopy
- StringsubCompanyName=request.getParameter("subCompanyName");
- subCompanyName=URLDecoder.decode(subCompanyName,"utf-8");
[html] view plaincopy
- java.net.URIDecoder.decode(Strings,Stringenc)方法說明:
- decode
- publicstaticStringdecode(Strings,
- Stringenc)
- throwsUnsupportedEncodingException
- 使用指定的編碼機制對application/x-www-form-urlencoded字元串解碼。給定的編碼用於確定任何"%xy"格式的連續序列表示的字元。
- 註:WorldWideWebConsortiumRecommendation聲明應使用UTF-8。如果不使用該編碼,可能造成不兼容性。
這樣頁面中文格式就正常顯示了。但是後臺還是報了異常,並不影響正常顯示。因為我的項目用的是GBK編碼,這與java.net.URIDecoder.decode(String s,String enc)方法的說明相一致。但是如果後臺能夠不報異常豈不更好?
哪位大俠有好的辦法可以給我點提示。先行拜謝!
-------------------------------------
2011-09-06
上面是為瞭解決頁面跳轉的顯示需要兩次encodeURIComponent。
實際上一次encodeURIComponent之後,將其轉為utf-8格式,然後在後臺轉回來即可。
js中:
encodeURIComponent($("#subCompanyName").val());
後臺:
String subCompanyName = request.getParameter("subCompanyName");
subCompanyName = URLDecoder.decode(subCompanyName, "utf-8");
推薦閱讀: