最近遇到ajax獲取數據出現中文亂碼問題

前提:數據庫,js頁面,後臺編碼都採用UTF-8格式
問題:ajax請求數據,在後臺傳遞到前臺的數據出現中文亂碼
解決方法:在ajax請求時添加

//解決編碼問題
contentType: "application/x-www-form-urlencoded; charset=utf-8"

以下引用自點這裏
今天閒的無聊,把以前遺留的問題解決一下,比如讓人頭痛的Jquery亂碼問題。其實這方面文章已經很多了,但全面解決各種問題的很少,今天總結一下,方便自己也方便大家。

原因很簡單: 其實他的中文亂碼就是因爲contentType沒有指定編碼,對於不同Jquery的版本中這個地方有不同的設置,就拿我遇到的,jquery-1.6.1和jquery-1.8.3就有不同的定義。

解決辦法:
在jquery-1.6.1文件中,搜索’contentType’
然後在application/x-www-form-urlencoded後面加上; charset=UTF-8
最終變成contentType:”application/x-www-form-urlencoded; charset=UTF-8”即可。
這樣通過post方法提交後會出現亂碼的問題就可以完美解決。


果還有亂碼現象,只能說你接收頁面的編碼也有問題,
這是由於異步對象XMLHttpRequest在處理返回的responseText的時候,是按UTF-8編碼進行解碼的。所以post方式的話,必須
把這個頁面另存一下,將頁面文件的編碼改爲 UTF-8 (請務必記住)。

JQuery Ajax提交出現中文亂碼的解決辦法2
前使用Jquery的時候一直沒有發現,用Ajax提交的時候會出現亂碼,我猜測可能是因爲編碼的原因

可能存在以下幾點原因:
1.HTML的編碼不統一:如頁面用的GB2312,好像JQuery對它支持不太好。以前我一直都是用UTF-8的,一直都沒有發現;
2.文件的編碼,這個不好在表面上看到,簡體中文版的操作系統存的文本格式的文件默認是 GB2312,建議把文件換成UTF-8格式的
最簡單的解決辦法,把提交的中文文本用 JS的 escape 處理一下,就不會現出現亂碼了。

解決的辦法上用js的編碼函數encodeURIComponent(string)處理一下,把中文”王曉明”編碼成”%E7%8E%8B%E6%99%93%E6%98%8E”,就OK了。

順便說一下,我的tomcat下的URIEncoding=UTF-8

今天在使用jquery檢測用戶名的時候,對英文和數字的用戶名檢測正確,但是對中文的時候,檢測出錯,經過在網上查詢一段時間,終於找到了原因,是亂碼問題,解決方法:
1、只要在ajax中有數據提交時,如果頁面編碼不是utf-8的,都應該對提交的數據進行編碼,js的編碼函數爲escape()
2、在服務器端頁接收數據後進行解碼,然後對數據進行相關的處理後再編碼
3、返回到客戶端後再解碼
4、如果沒有提交數據,而是直接從服務器端獲取數據,那直接在服務器頁面設置Response.Charset=”gb2312”即可,不用再編碼解碼

vbscript中分別對應js中的escape()和unescape()函數 程序代碼

通過以下處理方式得到解決:
傳遞參數的時候 對參數進行編碼priceName=”encodeURI(priceName)”,也可以用encodeURIComponent();
服務器端無需做其他處理: String priceName = request.getParameter(“priceName”);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章