第一種情況是使用param傳中文到後臺亂碼
解決辦法很簡單:首先取得亂碼的參數String name= request.getParameter("name");如果JSP編碼集是UTF-8
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
像這樣轉化一下就可以,一般大家都是這樣解決的!
第二種情況是使用URL帶參數的方法傳中文到後臺亂碼
解決辦法是:var url = "b.jsp?name=" +u_name;
url=encodeURI(url);
url=encodeURI(url); //寫一個不行。如果寫一個就是????號。
//寫2個,則輸出 ߤ這中.
服務端獲取:
String name=request.getParameter("name");
name = java.net.URLDecoder.decode(name,"UTF-8");
//這句話一定要,因爲如果不寫的 //話,編碼
就 是%
System.out.println(name);
第三種情況是JSP全局中文向後臺傳值亂碼
解決辦法:
根據Struts文檔的規定:只要在Struts.xml中配置這段話就可以解決中文亂碼問題
<constant name="struts.i18n.encoding" value="GBK" />
但是2..1.6版本中這是一個Bug,沒法解決中文亂碼問題
解決辦法是:一:升級到2.1.7之後的版本;二是:使用spring的filter,在web.xml中配置過濾
三:在web.xml中配置2.0版本的filter
<filter>
<filter-name>struts2</filter-name> <!--<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>-->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>