ajax傳送中文亂碼

前言:ajax向後臺傳送中文時出現的亂碼,有時在本地正常運行。但是放到服務器時(linux系統)出現亂碼,頭       痛很長時間,
正文:
1.get方式提交
      1.全站UTF-8編碼;
      2.請求頭編碼爲中文;
      3.使用javascript中的escape函數對url進行轉義,使用可以參考下面的代碼。
         但這些方法在POST方式中卻不起作用。大家都知道GET方式提交數據有長度限制,有時我們必須使用            POST方式來提交數據。
2.post方式提交
  方法很簡單,是使用escape(或encodeURI,兩個函數javascript的函數,功能基本相同,可以查一下相關的     幫助)對請求url進行轉義,但要使用兩次,這是解決問題的關鍵。
 jsp頁面
    var url = "GetWeather!getWeather.do?city=濟南";
   
 //進行兩次轉義
    url=encodeURI(url); 
    url=encodeURI(url);執行到這一步中文的轉義已經可以了,接下來就是用自己的代碼向後臺傳送了ajax傳送中文亂碼
 action :
     //獲取jsp傳送過來的中文參數,city 此時是不會出現亂碼的。(*^__^*) 嘻嘻……
    String city = java.net.URLDecoder.decode(request.getParameter("鍵值"),"UTF-8");

分析:當調用request.getParameter()函數時,會自動進行一次URI的解碼過程,調用時內置的解碼過程會導致亂碼出現。而URI編碼兩次後,request.getParameter()函數得到的是原信息URI編碼一次的內容。再用可控的解碼函數java.net.URLDecoder.decode()就可解出原始的正確的信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章