用GET方法時出現(xiàn)亂碼的問題。URL傳中文出現(xiàn)亂碼時:。
最近遇到一個問題:用get方法傳遞中文有問題,用post沒有問題。問題簡單的描述是這樣的:
<a href="userGroup.jsp?userGroupName=<%=userGroupName%>">aa</a>
這里userGroupName是中文
在userGroup.jsp頁面得到的userGroupName卻是亂碼。
每個頁面也都有<%@ page language="java" pageEncoding="GBK" %>說明。
后來上網(wǎng)找了一下才知道:pageEncoding這個只對post起作用。get方法提交時,大家可以從地址欄里看到提交的參數(shù),這是因為get方法傳遞是作為報文頭提交的,而pageEncoding對報文頭是沒有作用的,所以仍然按照 iso8859-1編碼,才出現(xiàn)了剛才的亂碼問題。而post提交的是form表單的內(nèi)容,pageEncoding指定了它的編碼,所以他會按照指定編碼傳遞。
問題清楚了,下面就來解決它:
由于tomcat的servlet實現(xiàn)中ServletRequest.setCharacterEncoding方法未對HTP報文頭的內(nèi)容進行解碼,因此
使用HTTP的GET方法提交的數(shù)據(jù)將不能正確的解碼.解決方案為修改其服務(wù)器的配置server.xml文件中對HTTP協(xié)議的
Connector配置,加上URIEncoding="GBK"屬性,配置完成以后"可能"的內(nèi)容為
< Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK" />
URL傳中文出現(xiàn)亂碼時:
問題:如傳類似這樣的地址" index.jsp?ddurl="+"我們是";ddurl獲得的就是亂碼。
解決辦法:這種傳值方式相當于get傳值,在傳值時對他加密:
encodeURI(url);