工作中遇到jsp關于取得地址欄中文亂碼的問題,經過查找,終于找到了解決的方法,下面為3種情況說明:
1、前臺javascript編碼+后臺jsp解碼方式:
前臺:
<sccript>
for(i=0;i<_input.length;i++){
if(_input[i].type=="text"){
_input[i].value=encodeURI(_input[i].value);
}
}
uploadForm.action="selPerson.jsp";
uploadForm.submit();
</script>
這里先對表單里的數據進行編碼.encodeURL這個方法轉出來的編碼是UTF-8的.
或者通過鏈接傳遞
<a href="selPerson.jsp?param=encodeURI('中文字')">
后臺:
<%@ page import="java.net.URLDecoder"%>
URLDecoder.decode(request.getParameter("param").getString(),"UTF-8"));
2、前臺javascript編碼+后臺javascript解碼方式
前臺:
<a href="selPerson.jsp?param=escape('中文字')">
后臺:
unescape(param)
3、前臺jsp編碼+后臺jsp解碼方式
前臺:
<%@ page import="java.net.URLEncoder"%>
<a href="selPerson.jsp?param=<%=URLEncoder.encode("中文字")%>">
后臺:
<%@ page import="java.net.URLDecoder"%>
URLDecoder.decode(request.getParameter("param"))
因為在jsp中取不到javascript定義的變量值,javascript可以取到jsp中的變量值,我們一般常用的就是第一種方式。