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");」。
本教學操作環境: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中文網其他相關文章!