Ajax中文亂碼解決方法 相容ie ff

2021-05-27 14:01:12 字數 2623 閱讀 6928

ajax的中文亂碼可以大概分為兩中,第一種是向伺服器端傳送中文引數時 (xmlhttp.open(「get|post」,url,true)),伺服器端接收到的為亂碼,這個也是我今天遇到的問題,沒做處理之前,在ie裡 是正常的,但是在firefox裡面就出現了亂碼,我先把接收到引數輸出到乙個文字裡,沒有發現什麼問題,鬱悶了,然後我就把查詢語句在輸出來觀察(我這 裡是要從資料庫裡查出與引數相關的東西),終於發現問題,ie和firefox輸出的引數不一樣,雖然漢字上都一樣,但是和前後連線上有細小的區別,於是 認定了是編碼問題,在網上查詢了相關資料,都沒能解決問題,但是得到一些啟示,因為ajax傳送資料都是採用utf-8編碼的方式傳送的,所以要在伺服器 端進行編碼轉換(我這裡頁面是採用gb2312編碼的,如果是採用utf-8的話應該不會有這步的問題),所以我在伺服器端進行了utf-8轉 gb2312,

$str=iconv("utf-8","gb2312",$str);

geturl=encodeuri(geturl);

geturl=encodeuri(geturl); //兩次也可以寫成geturl=encodeuri(encodeuri(geturl));

然後再到伺服器端進行url解碼:

$str=urldecode($str); //解碼

$ str =iconv("utf-8","gb2312",$ str); //編碼轉換

注意:解碼必須在編碼轉換前面,不然得不到正確值

儲存測試,ie和firefox都能正常了。

第二種就是伺服器端向客戶端輸出中文時出現亂碼,這類問題網上的答案就比較多了,也都能解決,為了避免各位再去查詢,我在這裡就copy下j

原因:ajax在接收responsetext或respon***ml的值的時候是按照utf-8的格式來解碼的,如果伺服器段傳送的資料不是utf-8的格式,那麼接收responsetext或respon***ml的值有可能為亂碼。

解決辦法:

在伺服器指定傳送資料的格式:

在jsp檔案中:

response.setcontenttype("text/text;charset=utf-8");//返回的是txt文字檔案

或是response.setcontenttype("text/xml;charset=utf-8");//返回的xml檔案

php:header('content-type:text/html;charset=gb2312');

asp:response.charset("gb2312")

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

ajax的中文亂碼可以大概分為兩中,第一種是向伺服器端傳送中文引數時 (xmlhttp.open(「get|post」,url,true)),伺服器端接收到的為亂碼,這個也是我今天遇到的問題,沒做處理之前,在ie裡 是正常的,但是在firefox裡面就出現了亂碼,我先把接收到引數輸出到乙個文字裡,沒有發現什麼問題,鬱悶了,然後我就把查詢語句在輸出來觀察(我這 裡是要從資料庫裡查出與引數相關的東西),終於發現問題,ie和firefox輸出的引數不一樣,雖然漢字上都一樣,但是和前後連線上有細小的區別,於是 認定了是編碼問題,在網上查詢了相關資料,都沒能解決問題,但是得到一些啟示,因為ajax傳送資料都是採用utf-8編碼的方式傳送的,所以要在伺服器 端進行編碼轉換(我這裡頁面是採用gb2312編碼的,如果是採用utf-8的話應該不會有這步的問題),所以我在伺服器端進行了utf-8轉 gb2312,

$str=iconv("utf-8","gb2312",$str);

geturl=encodeuri(geturl);

geturl=encodeuri(geturl); //兩次也可以寫成geturl=encodeuri(encodeuri(geturl));

然後再到伺服器端進行url解碼:

$str=urldecode($str); //解碼

$ str =iconv("utf-8","gb2312",$ str); //編碼轉換

注意:解碼必須在編碼轉換前面,不然得不到正確值

儲存測試,ie和firefox都能正常了。

第二種就是伺服器端向客戶端輸出中文時出現亂碼,這類問題網上的答案就比較多了,也都能解決,為了避免各位再去查詢,我在這裡就copy下j

原因:ajax在接收responsetext或respon***ml的值的時候是按照utf-8的格式來解碼的,如果伺服器段傳送的資料不是utf-8的格式,那麼接收responsetext或respon***ml的值有可能為亂碼。

解決辦法:

在伺服器指定傳送資料的格式:

在jsp檔案中:

response.setcontenttype("text/text;charset=utf-8");//返回的是txt文字檔案

或是response.setcontenttype("text/xml;charset=utf-8");//返回的xml檔案

php:header('content-type:text/html;charset=gb2312');

asp:response.charset("gb2312")

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

AJAX的中文亂碼解決方法整理

encodeuricomponent dudu賽車 它是將中文 韓文等特殊字元轉換成utf 8格式的url編碼 主要是為了網頁國際化 dudu e8 b5 9b e8 bd a6 1.在客戶端 頁面js 將中文轉成utf 8的格式url編碼.即 e8 b5 9b格式的 2.然後在伺服器端 jsp s...

AJAX亂碼解決方法

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

linux中文亂碼解決方法

在使用centos 系統時,安裝的時候可能你會遇到英文的centos系統,在這中情況下安裝centos系統時是預設安裝 即英文 安裝完畢後,出現的各種中文亂碼。那麼,我們如何解決這種問題呢。一 centos系統訪問 g.cn 發現中文亂碼。於是用以前的方式 yum y install fonts c...