佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > AJAX中文亂碼PHP中完美解決方法

AJAX中文亂碼PHP中完美解決方法

熱門標簽:Linux服務器 阿里云 電子圍欄 Mysql連接數(shù)設置 科大訊飛語音識別系統(tǒng) 銀行業(yè)務 服務器配置 團購網站
最近在做一個項目,遇到AJAX中文亂碼問題,經過一個下午的努力終于完美解決,現(xiàn)將心得寫下來,希望對那些還困繞在這個問題而頭痛不已的人們有所幫助。

眾所周知,使用AJAX傳送和接收中文參數(shù)時,如果不在客戶端和服務器做相應的處理就會出現(xiàn)亂碼問題,在網上相應的文章也不少,但是有的情況下很難從中找到符合自己理想的答案,我今天就是在網上找了很多,但是都差不多,講ASP和JSP的比較多(我是用的PHP),所以到最后都沒找到自己滿意的答案。

AJAX的中文亂碼可以大概分為兩中,第一種是向服務器端發(fā)送中文參數(shù)時(xmlhttp.open(“getpost”,url,true)),服務器端接收到的為亂碼,這個也是我今天遇到的問題,沒做處理之前,在IE里是正常的,但是在Firefox里面就出現(xiàn)了亂碼,我先把接收到參數(shù)輸出到一個文本里,沒有發(fā)現(xiàn)什么問題,郁悶了,然后我就把查詢語句在輸出來觀察(我這里是要從數(shù)據(jù)庫里查出與參數(shù)相關的東西),終于發(fā)現(xiàn)問題,IE和Firefox輸出的參數(shù)不一樣,雖然漢字上都一樣,但是和前后連接上有細小的區(qū)別,于是認定了是編碼問題,在網上查找了相關資料,都沒能解決問題,但是得到一些啟示,因為AJAX發(fā)送數(shù)據(jù)都是采用UTF-8編碼的方式發(fā)送的,所以要在服務器端進行編碼轉換(我這里頁面是采用GB2312編碼的,如果是采用UTF-8的話應該不會有這步的問題),所以我在服務器端進行了UTF-8轉GB2312,

$str=iconv("UTF-8","GB2312",$str);

然后測試,在Firefox上順利解決了問題,以為大公告成了,可是再到IE下測試,發(fā)現(xiàn)IE又出現(xiàn)了問題,服務器端接收到的參數(shù)沒值,這下就郁悶了,突然看到發(fā)送頭設置了setRequestHeader("Content-Type","application/x-www-form-urlencoded");,就找到問題所在了,然后就在發(fā)送那里進行了參數(shù)編碼:
復制代碼 代碼如下:

geturl=encodeURI(geturl);
geturl=encodeURI(geturl); //兩次也可以寫成geturl=encodeURI(encodeURI(geturl));
xmlhttp.open("GET",geturl,true);

然后再到服務器端進行URL解碼:
復制代碼 代碼如下:

$str=urldecode($str); //解碼
$ str =iconv("UTF-8","GB2312",$ str); //編碼轉換

注意:解碼必須在編碼轉換前面,不然得不到正確值
保存測試,IE和Firefox都能正常了。
第二種就是服務器端向客戶端輸出中文時出現(xiàn)亂碼,這類問題網上的答案就比較多了,也都能解決,為了避免各位再去查找,我在這里就COPY下J
原因:AJAX在接收responseText或responseXML的值的時候是按照UTF-8的格式來解碼的,如果服務器段發(fā)送的數(shù)據(jù)不是UTF-8的格式,那么接收responseText或responseXML的值有可能為亂碼。

解決辦法:

在服務器指定發(fā)送數(shù)據(jù)的格式:
在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");
您可能感興趣的文章:
  • 解決phpmyadmin中文亂碼問題。。。
  • ajax+php中文亂碼解決辦法
  • 小結下MySQL中文亂碼,phpmyadmin亂碼,php亂碼 產生原因及其解決方法
  • php url地址欄傳中文亂碼解決方法集合
  • 探討PHP JSON中文亂碼的解決方法詳解
  • PHP頁面中文亂碼分析
  • php中文亂碼怎么辦如何讓瀏覽器自動識別utf-8
  • 常見php與mysql中文亂碼問題解決辦法
  • php中json_encode UTF-8中文亂碼的更好解決方法
  • PHP使用MPDF類生成PDF的方法
  • PHP MPDF中文亂碼的解決方式

標簽:大理 衢州 蚌埠 廣元 衡水 萍鄉(xiāng) 江蘇 棗莊

巨人網絡通訊聲明:本文標題《AJAX中文亂碼PHP中完美解決方法》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    民丰县| 清涧县| 晋州市| 巴青县| 喀喇沁旗| 朝阳县| 东明县| 中山市| 宁明县| 和平县| 乳山市| 措勤县| 东山县| 吴川市| 绥芬河市| 昭平县| 贡嘎县| 林甸县| 丰宁| 无极县| 洪洞县| 海伦市| 南开区| 鄂伦春自治旗| 色达县| 马关县| 海原县| 宁陕县| 杂多县| 崇州市| 康保县| 四川省| 永济市| 屯门区| 夏津县| 陕西省| 柳河县| 海门市| 桂林市| 延长县| 页游|