JAVA中應用AJAX的中文亂碼問題的解決

來源:互聯網
上載者:User

 關於AJAX採用POST方法提交到Java後台出現亂碼的問題,網上有很多都是在伺服器端設定request.setcharacterencoding("utf-8")這種方法解決或者是把所有前台後台編碼都改成UTF-8,但是在自己的項目上使用此方法不能實現(後來分析有可能是使用編碼過濾器的原因)。經過幾天摸索終於搞定:
1、ajax提交時採用escape或encodeURI方法。必須使用2次
2、後台java用java.net.URLDecoder類的decode方法。

前台頁面局部代碼:
/**
 * marging是一個js對像用於承載頁面部分功能和參數
 * xmlHttp是改寫後的AJAX對像,屬性paramString為post方式發送到服務端的參數
 * 前台,後台頁面都採用的GBK編碼,使用了編碼過濾器
 */
xmlHttp.paramString="mName="+marging.mNames;
//參數經過2次encodeURI編碼
xmlHttp.paramString=encodeURI(xmlHttp.paramString);
xmlHttp.paramString=encodeURI(xmlHttp.paramString);
//發送儲存請求
var xmlReq=xmlHttp.getTextByPost("mailMerginged.jsp");

後台頁面代碼:
/**
 *  當調用request.getParameter()函數時,會自動進行一次URI的解碼過程
 *  調用時內建的解碼過程會導致亂碼出現。而URI編碼兩次後,request.getParameter()函數
 *  得到的是原資訊URI編碼一次的內容。再用可控的解碼函數java.net.URLDecoder.decode()
 *  就可解出原始的正確的資訊。
 */
String mName=java.net.URLDecoder.decode(request.getParameter("mName"),"UTF-8");

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.