首頁  >  文章  >  web前端  >  jquery ajax utf-8 亂碼怎麼辦

jquery ajax utf-8 亂碼怎麼辦

藏色散人
藏色散人原創
2023-02-17 09:46:022170瀏覽

jquery ajax utf-8亂碼的解決方法:1、設定contentType的編碼為“utf-8”,代碼為“contentType: "application/x-www-form-urlencoded;charset=utf-8 "”;2、在取得PrintWriter物件之前設定「resp.setContentType("text/text;charset=GBK");」。

jquery ajax utf-8 亂碼怎麼辦

本教學操作環境:Windows10系統、jquery3.2.1版本、Dell G3電腦。

jquery ajax utf-8 亂碼怎麼辦?

jQuery AJAX 請求亂碼回傳亂碼

 1. jQuery AJAX 請求後台收到為亂碼

可以明確設定contentType的編碼為utf-8, 後台一般都能正常解碼例如:

contentType: "application/x-www-form-urlencoded; charset=utf-8",
jQuery(form).ajaxSubmit({
url: "doLogin?user=a",
type: "post",
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: showLoginResponse
});

如果不加contentType: "application/x-www-form-urlencoded; charset=UTF-8",  而使用escape(),則會出現

#「post 主體所包含的位元組比內容長度指定的位元組少」

的錯誤.

 

2.  jQuery AJAX 傳回亂碼

你是否發現無論你怎麼設定編碼, 客戶端收到的資料總是亂碼呢, 請看下面的例子,你發現有什麼問題嗎?

void saveTempKind(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException { 
 PrintWriter pw = resp.getWriter();
 resp.setContentType("text/text;charset=GBK"); 
 try {
  //DO PROCESS 
  pw.write("成功");
 }catch(Exception e){
  pw.write("失败");
 }
}

 

問題在於resp.setContentType("text/text;charset=GBK"); 語句應該在

PrintWriter pw = resp.getWriter();

之前,而不是之後。如果像上例這樣,無論你怎麼設定response的編碼,前端亂碼的問題都依然如故。可能的原因是pw在獲得PriintWriter 之前,編碼就已經確定了。所以編碼的聲明應該在取得PrintWriter物件之前。

推薦學習:《jQuery影片教學

以上是jquery ajax utf-8 亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn