ajax異步從前臺傳值給後天中文亂碼的幾種情況及解決辦法

第一種情況是使用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之後的版本;二是:使用springfilter,在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>

 

發佈了35 篇原創文章 · 獲贊 27 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章