我們經常使用如下方式進行參數傳遞,如:
- <a href="....?action=中文參數" mce_href="....?action=中文參數">url參數傳遞</a>
而後臺僅有如下代碼:
- String action = request.getParameter("action");
那麼獲取的可能是亂碼,普通的解決方法有:
1.
- request.setCharacterEncoding("UTF-8");
- String action=new String(request.getParameter("action")) ;
2.
- String action = new Stirng(request.getParameter(action).getBytes("UTF-8"));
3.
有些還說在Tomcat中的server.xml中修改配置文件,添加URIEncoding="UTF-8"
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
以上方法測試都可以通過(非IE6.0),但是如果在IE6.0下測試,那麼有很多問題。
在IE6.0下測試發現,IE6.0對中文參數的長度有限制,當超過2箇中文字符後,第三個字符將產生中文亂碼,無法獲取全部的參數值,這可能是IE6.0的bug,一下提供解決的方法。
在傳遞參數時,對中文字符進行加密操作,具體代碼如下:
前臺URL地址:
- <a href="......?action= <%=java.net.URLEncoder.encode(" mce_href="......?action=<%=java.net.URLEncoder.encode("中文參數","UTF-8")%>">url參數傳遞</a>
後臺接受代碼:
- String action = new String(request.getParameter().getBytes("UTF-8"));
在IE6.0下測試通過,無亂碼產生,而且對中文字符進行了加密,如:%E8%AE%B8%E7%8E%B2,提高了安全性。