Ajax開發過程表單提交數據出現亂碼和解決辦法

最近在用ajax開發一些web應用,發現用表單提交的form表單到服務器出現亂碼,找了很多書都沒說這個問題耶。。。。怎麼搞呀?

網上搜索了一下這方面的資料,有些網友說是application/x-www-form-urlencoded編碼的原因,不知道是否這個問題,誰會解決?

所有的程序我都是統一用gb2312或GBK

最簡單的解決辦法:

通常我們用servlet的時候接收參數的時候都是用gb2312或GBK

但在ajax的post方法裏面就不行了

必須要這樣:

如:
//要傳遞的參數
  1. //GET方式提交   
  2. doRequestUsingGET() {   
  3.         createXMLHttpRequest();   
  4.         var url = "GetAndPostExample?" + queryString + "&timeStamp="  
  5.                           + new Date().getTime();   
  6.         xmlHttp.onreadystatechange = handleStateChange;   
  7.         xmlHttp.open("GET", url, true);   
  8.         xmlHttp.send(null);   
  9. }   
  10.   
  11. //POST方式提交   
  12. function doRequestUsingPOST() {   
  13.         createXMLHttpRequest();   
  14.         var url = "GetAndPostExample?timeStamp=" + new Date().getTime();   
  15.         xmlHttp.open("POST", url, true);   
  16.         xmlHttp.onreadystatechange = handleStateChange;   
  17.         xmlHttp.setRequestHeader("Content-type""application/x-www-form-urlencoded");   
  18.         xmlHttp.send(queryString);   
  19. }  
當在servlet接收參數時,必須要這樣:

//當用POST方法時,一定要設置成utf-8,否則亂碼
String firstName = new String(request.getParameter("firstName").getBytes("ISO-8859-1"), "utf-8");

//當用GET方法時,要設置成GB2312,否則亂碼。
String lastName = new String(request.getParameter("lastName").getBytes("ISO-8859-1"), "GB2312");

這樣,服務器端的程序就接收到表單上的中文字了....

此爲轉載文章....如需要轉載請註明原出處...

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