Ajax 中文亂碼問題

2021-04-26 06:51:29 字數 1361 閱讀 3930

ajax中文資料亂碼問題。

1、向伺服器傳送請求資料在伺服器端必須經過內碼轉換才行。

轉換**:

string value = request.getparmater("key");

value = new string(value.getbytes("iso8859_1"),"gbk");

//value已經由預設內碼轉換位gbk了

我遇到的問題就是在傳送非同步請求時,url引數裡有中文:var url = "userchecked?user="+user;

其中user值為中文,但是傳送到服務端servlet中接收該引數時就成亂碼了,當然各種網上提到的解決方法都試過了,包括什麼建立過濾器(失敗),js函式資料封裝,就是encodeuricomponent()等這些函式,個人覺得上面我列出的方法是解決該問題的最好方法咯 。

2、伺服器端向客戶端寫資料時,需要設定資料格式和內碼才行。

設定**:

response.setcontenttype("text/html");

response.setcharacterencoding("gbk");

網上其他一些解決方法或解釋:

ajax 是依靠xmlhttprequest 物件來非同步傳送請求

造成亂嗎肯定是由於中文編碼和http頭中的編碼 不一致

預設在http頭中找不到編碼的話 xmlhttprequest物件是把字元按照utf-8來處理的 如果你設定了http頭的編碼的話 就會按照你設定的型別來編碼.

解決返回資料的亂嗎問題可能在jsp的servlet裡面這樣設定

response.setheader("charset", "gb2312");

解決傳送的請求後台處理的時候亂碼需要 設定xmlhttprequest物件傳送請求時候的編碼. 在prototype中的編碼設定 是這樣

new ajax.request(

'test',

, encoding :'utf-8'//和你的提交的編碼一直

} );

傳送請求的時候,物件可能是這樣:uarea.do?method=checkname&name=你的名字

那麼在action或者servlet中如何獲取這個name,如果不作任何處理。。。接收到的可能是亂碼....

解決方案:

在js中:

//傳送請求,傳遞使用者輸入的name到庫中去檢測

function checkname(obj)

在action或者servlet中解密:

string name = request.getparameter("name");

try catch (unsupportedencodingexception e)

Ajax中文亂碼問題

注意兩個問題 1 頁面 window.nl ad function 以上 表示在頁面載入完畢之後執行的ajax。並且在檔案都設定為utf 8格式,如 contenttype text html charset utf 8 pageencoding utf 8 2 後台 在傳送之前加上 respons...

ajax的中文亂碼問題

我想每個人在使用ajax的時候肯定都遇到過中文亂碼的問題,我也不例外,這個問題困 擾我的時間也不短,後來我總算時把它搞清楚了 ajax使用的是另外乙個執行緒,所以它的字 符編碼是和頁面無關的,也就是說,它總是用gb2312編碼向伺服器傳送資料,並且總是把接 受到的資料當gb2312來理解,這是由我們...

Ajax應用 中文亂碼問題

ajax不支援多種字符集,它預設的字符集是utf 8,所以在應用ajax技術的程式中應及時進行編碼轉換,否則對程式中出現的中文字元將變成亂碼。一 傳送請求是出現亂碼 將資料提交到伺服器有兩種方法,一種是使用get方法提交 另一種是使用post方法提交。1 當接收使用get方法提交的資料是,要將編碼轉...