1. 程式人生 > >AJAX中文傳值亂碼問題解決方法

AJAX中文傳值亂碼問題解決方法

軟體開發過 程中,亂碼問題一直都是我們最頭痛的事,頁面的編碼,開發環境的編碼,資料庫的編碼,有一個不一致都有可能導致亂碼問題的發生;有的很好解決,有的很棘 手;當你使用AJAX技術時,為呼叫的後臺方法傳值是必不可少的,英文和數字還好解決,一般不會出現亂碼,介是如果是要傳中文的字元呢?很容易就會亂掉, 因為在你使用編碼的時候一般會預設:BG2312,而Ajax預設使用的是UTF-8編碼格式,客戶端中文字元傳輸到伺服器端時,很可能會出現中文亂碼。
  下面我們就討論一下如何解決咱們在進行軟體開發過程中遇到的亂碼問題:

  1、如果你不使用Ajax時出現亂碼,大多都是頁面和後臺程式碼的編碼不一致,只要轉換一下就好了,可以採用下面兩句話:

    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");

  2、如果你使用了Ajax技術時出現亂碼,可以使用以下兩種解決方法:

  (1)、在瀏覽器端對要傳遞的中文引數進行編碼處理.程式碼如下:

  xmlhttp.open("POST","AjaxServlet",true); //請求引數初始化

  xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因為請求方式為POST,所以這裡要設定請求頭.GET方法可以省略
  xmlhttp.send("str=" encodeURI(encodeURI("安安DIY創作室"))); //向伺服器端傳送引數

  在伺服器端程式碼:
  PrintWriter out = response.getWriter(); //得到response的輸出流物件

  String str = request.getParameter("str"); //得到頁面上名字為str的引數
  String str2 = URLDecoder.decode(str,"utf-8"); //對得到的引數進行解碼

  out.print(str); //向瀏覽器端傳送資料

  (2)、在瀏覽器端對要傳遞的中文引數進行編碼處理.程式碼如下:

  xmlhttp.open("POST","AjaxServlet",true); //請求引數初始化

  xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因為請求方式為POST,所以這裡要設定請求頭.(如果請求方式為GET,此句程式碼可以省略)

  xmlhttp.send("str=" encodeURI("安安DIY創作室")); //向伺服器端傳送引數

  在伺服器端程式碼:

  PrintWriter out = response.getWriter(); //得到response的輸出流物件

  String str = request.getParameter("str"); //得到頁面上名字為str的引數
 String str2 = new String((str.getBytes("ISO-8859-1")),"UTF-8");

//對得到的引數進行解碼
  out.print(name); //向瀏覽器端傳送資料

  以上兩種方法,在使用Ajax傳遞中文引數時,亂碼問題可以在任意瀏覽器下解決,正確顯示中文。有的只用紅色部分那一名程式碼就好了,如果你有好的辦法,一定要到上海軟體開發空間我留言哦…共同學習…