咱們常常會遇到這樣的場景:在URL中傳遞參數,若是該參數爲中文,若是設置不當,會出現亂碼問題。java
URL傳參所使用的編碼爲服務器中設置的編碼,而ajax請求的編碼爲頁面編碼。ajax
若是不設置tomcat的默認編碼爲ISO-8859-1,而若是在設置中加入 useBodyEncodingForURI="true"tomcat
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
那麼url中參數的編碼就與頁面編碼一致。服務器
若是頁面編碼爲UTF-8,java後臺編碼爲UTF-8,那麼後臺獲得的參數就不會出現亂碼問題。編碼
若是不設置useBodyEncodingForURI="true",那麼須要在java後臺中,將ISO-8858-1編碼的中文轉換爲UTF-8格式的。url
new String(search_name.getBytes("ISO-8859-1"),"UTF-8");
上述方法雖然能解決URL傳參中文亂碼問題,可是依賴於Tomcat服務器配置,須要不一樣的業務邏輯進行處理,這樣的話,同一個war包,部署到不一樣的服務器上會出現問題。spa
所以,儘可能用ajax來傳遞中文參數。code