頁面傳入後臺出現漢字亂碼解決辦法java
1、若是使用iframe,將參數傳入後臺處理,若是出現漢字亂碼安全
頁面中的iframe:服務器
<iframe id="UserInfoIframe" name="UserInfoIframe" style="display: none"></iframe>post
js方法中:spa
var _$param="userName="+Name+"&userID="+Id;//Name爲漢字.net
_$param=encodeURI(_$param);code
_$param=encodeURI(_$param);orm
var destUrl="/xxx/GetUserInfo_getInfo.action?"+_$param;get
document.getElementByIdx("UserInfoIframe").src=destUrl;input
後臺處理:
String userName=request.getParameter("userName");
try {
userName=java.net.URLDecoder.decode(userName,"UTF-8");
}catch (UnsupportedEncodingException e) {
log4j.error(e.getMessage());
e.printStackTrace();
}
也能夠:
js方法中不需處理;
後臺:
String buttonName=request.getParameter("buttonName");
buttonName = new String(buttonName.getBytes("GBK"),"UTF-8");
2、經過form表單提交到後臺
經過form傳入後臺,提交方式分爲post和get兩種。二者的區別須要經過提交表單後纔看得出來,主要是在數據發送方式和接收方式上。Post和Get都是表單屬性Method的可選值,Method的默認值爲Get,二者的主要區別在於:
1.在客戶端,Get方式在經過URL提交數據,提交後在地址欄中的地址會出現傳入到後臺的參數;而Post提交後地址欄中的地址不會出現參數。
2.在服務器端只能用Request.QueryString來獲取Get方式提交來的數據,用Post方式提交的數據只能用Request.Form來獲取。
通常來講,儘可能避免使用Get方式提交表單,由於有可能會致使安全問題。好比說在登錄表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。可是在分頁程序中,用Get方式就比用Post好。
Get把參數添加到action屬性指定的地址中,並以錨方式打開。
Post經過HTTP post處理髮送數據。
若是將form中的參數含有漢字,提交到後臺有可能也會出現亂碼,通常若是method設置爲「post」,將不會出現亂碼,若是將method設置爲「get」,可能在漢字傳入到後臺後會出現亂碼問題。
頁面中的form:
<iframe id="userInfoIframe" name="userInfoIframe" style="display: none"></iframe>
<form id="userInfoForm" method="post" action="" target="userInfoIframe">
<input type="hidden" id="pageSize" name="pageSize" value=""/>
<input type="hidden" id="destPage" name="destPage" value=""/>
<input type="hidden" id="condition" name="condition" value=""/>
</form>