ajax亂碼解決記錄

2021-08-25 21:28:42 字數 902 閱讀 9555

做j2ee web專案,很多時候都直接在jsp頁面設定編碼為:gbk。而在表單中提交資料到後台服務時遇到中文亂碼,我們也會輕車熟路的在web.xml中增加編碼過濾器:

set character encoding

org.springframework.web.filter.characterencodingfilter

encoding

gbkforceencoding

true

注:此過濾器只對post方式提交的資料有效,get方式需要採用另外的方法解決。

但用到ajax提交資料時,發現該過濾器失效,中文資料到後台,還是亂碼。網上關於ajax提交資料成亂碼的解決方法很多,在實際的專案開發中並不好用。在此僅提供另一種解法方法,作為一種參考。

分析:ajax提交資料時,是將資料進行utf-8編碼後傳送的,請求資料到達過濾器進行解碼時,utf-8和gbk並不是相容型編碼。所以經過過濾器後還是亂碼。如果將過濾器的編碼設定為:utf-8則可以正確解碼中文資料。但這樣一來,jsp頁面提交的資料又會出現亂碼。所以可以考慮配置兩個過濾器,配置乙個針對ajax請求的過濾器。

set character encoding

org.springframework.web.filter.characterencodingfilter

encoding

utf-8

forceencoding

true

在對映請求路徑時,需要與前乙個過濾器有所區別,如針對ajax請求的url-pattern:/ajax/* 在用到ajax請求的地方,需要注意將ajax請求的url帶上ajax標識。這樣ajax請求會先經過utf-8過濾器的處理,此時已經無亂碼,再經過第乙個過濾器的處理。最後到後台程式時,資料已經無亂碼問題了。

此方法需要約定ajax請求的url遵循一定的規則。

解決ajax亂碼心得

1 如果伺服器端的頁面編碼是utf 8,那麼客戶端就直接用temp1 xmlhttp.responsetext接收,就不會產生亂碼,因為js預設情況下是讀utf 8編碼的。2 如果伺服器端的頁面編碼是gb2312,那麼客戶端就要先用temp1 xmlhttp.responsebody接收服務端返回的...

AJAX亂碼解決方法

size medium ajax亂碼解決方法 在剛開始做ajax程式的時候,一般都會遇到這個問題 ajax亂碼。它產生的原因和解決方法如下 ajax中會產生亂碼的主要原因是 一 js提交查詢xmlhttp返回的資料,預設的字元編碼是utf 8,此時如果前台頁面是gb2312或者其它編碼,資料就會產生...

ajax亂碼解決方案

很多初學ajax的朋友都會遇到ajax亂碼的問題,為什麼會出現ajax亂碼呢?該怎麼解決ajax亂碼的問題呢?我們是不是要看看ajax原理呢?先別急,我們先看看出現ajax亂碼的原因。很簡單,js框架多數是utf 8的,這下明白ajax亂碼出現的原因了吧,那我們如何解決ajax亂碼呢?兩種方法。一 ...