解決瀏覽器向服務器傳遞參數時中文亂碼問題

 

解決Get方式的中文參數的亂碼問題:
方式1:
前提是Tomcat是默認的配置:java

key = new String(key.getBytes("iso8859-1"), "utf-8");

方式2:
在Tomcat的server.xml中設置:編碼

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443"
URIEncoding="utf-8" (這是重點,表示獲取參數解碼時默認使用的編碼類型)
/>

方式3:(推薦)
1.在頁面中進行兩次URL編碼:spa

param = encodeURI(param);
param = encodeURI(param);

經過URL傳值到服務端。
2.在Action中再進行一次URL解碼(由於在req.getParameter(..)時已經作過一次URL解碼了).net

String param = URLDecoder.decode(req.getParameter(param)); 

 

struts標籤解決亂碼問題:code

在struts標籤中這樣寫,就能夠進行兩次URL編碼了,前提是在struts.xml中要設置一下:
<!-- 設置爲在OGNL中能夠調用靜態方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />server

<s:a action="processDefinitionAction_delete" onclick="return delConfirm()">
    <s:param name="key" value="%{@java.net.URLEncoder@encode(key, 'utf-8')}"></s:param>
    刪除
</s:a>
相關文章
相關標籤/搜索