解決ajax+php中文亂碼的方法詳解
更新時(shí)間:2013年06月09日 16:10:04 作者:
本篇文章是對(duì)ajax+php中文亂碼的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
中文如果用表單提交的話,不會(huì)出現(xiàn)亂碼,而用ajax提交就會(huì)出現(xiàn)亂碼,這是什么原因呢?
我的理解是,我在寫源碼的時(shí)候,一般用記事本寫,保存的時(shí)候默認(rèn)用ANSI編碼,源碼中也沒有用“<meta http-equiv=Content-Type content=text/html;charset=UTF-8>”或“header('Content-Type:text/html;charset=UTF-8');”指定網(wǎng)頁編碼,于是在瀏覽器中顯示時(shí)它的編碼被認(rèn)定為“GB2312”。當(dāng)前臺(tái)向后臺(tái)傳遞數(shù)據(jù)的時(shí)候,用表單提交的話,前后臺(tái)之間用“GB2312”編碼交流,不會(huì)出現(xiàn)亂碼;而用ajax提交的話,ajax在前臺(tái)把要發(fā)送的數(shù)據(jù)編碼從“GB2312”轉(zhuǎn)換 成“UTF-8”后再傳給后臺(tái),然后再把接收到的后臺(tái)返回的數(shù)據(jù)當(dāng)成是 “UTF-8”而把它轉(zhuǎn)換 成“GB2312”后顯示在前臺(tái)頁面上,這樣亂碼就產(chǎn)生了。
如圖:

所以要解決亂碼,要在后臺(tái)進(jìn)行數(shù)據(jù)編碼轉(zhuǎn)換,后臺(tái)接收到的數(shù)據(jù)用PHP的mb_convert_encoding("要轉(zhuǎn)換的數(shù)據(jù)","gb2312","UTF-8")進(jìn)行轉(zhuǎn)換后存儲(chǔ)到數(shù)據(jù)庫。而后臺(tái)返回到前臺(tái)的中文數(shù)據(jù)也要用mb_convert_encoding("要返回的數(shù)據(jù)","UTF-8","gb2312")轉(zhuǎn)換后返回。
我的理解是,我在寫源碼的時(shí)候,一般用記事本寫,保存的時(shí)候默認(rèn)用ANSI編碼,源碼中也沒有用“<meta http-equiv=Content-Type content=text/html;charset=UTF-8>”或“header('Content-Type:text/html;charset=UTF-8');”指定網(wǎng)頁編碼,于是在瀏覽器中顯示時(shí)它的編碼被認(rèn)定為“GB2312”。當(dāng)前臺(tái)向后臺(tái)傳遞數(shù)據(jù)的時(shí)候,用表單提交的話,前后臺(tái)之間用“GB2312”編碼交流,不會(huì)出現(xiàn)亂碼;而用ajax提交的話,ajax在前臺(tái)把要發(fā)送的數(shù)據(jù)編碼從“GB2312”轉(zhuǎn)換 成“UTF-8”后再傳給后臺(tái),然后再把接收到的后臺(tái)返回的數(shù)據(jù)當(dāng)成是 “UTF-8”而把它轉(zhuǎn)換 成“GB2312”后顯示在前臺(tái)頁面上,這樣亂碼就產(chǎn)生了。
如圖:

所以要解決亂碼,要在后臺(tái)進(jìn)行數(shù)據(jù)編碼轉(zhuǎn)換,后臺(tái)接收到的數(shù)據(jù)用PHP的mb_convert_encoding("要轉(zhuǎn)換的數(shù)據(jù)","gb2312","UTF-8")進(jìn)行轉(zhuǎn)換后存儲(chǔ)到數(shù)據(jù)庫。而后臺(tái)返回到前臺(tái)的中文數(shù)據(jù)也要用mb_convert_encoding("要返回的數(shù)據(jù)","UTF-8","gb2312")轉(zhuǎn)換后返回。
相關(guān)文章
PHP MYSQL亂碼問題,使用SET NAMES utf8校正
PHP操作數(shù)據(jù)庫的時(shí)候,數(shù)據(jù)庫中數(shù)據(jù)使用UTF8編碼,在讀出來的時(shí)候,顯示的全是???????問號(hào)亂碼,找了一些資料原來是在讀取之前進(jìn)行一次編碼設(shè)置2009-11-11
rephactor 優(yōu)秀的PHP的重構(gòu)工具
從PHP5開始,提供了強(qiáng)大的面向?qū)ο蠊δ堋J沟肞HP能夠完全按設(shè)計(jì)模式編程。2011-06-06
如何用PHP websocket實(shí)現(xiàn)網(wǎng)頁實(shí)時(shí)聊天
websocket作為HTML5里一個(gè)新的特性一直很受人關(guān)注,因?yàn)樗娴姆浅??,打破了http“請(qǐng)求-響應(yīng)”的常規(guī)思維,實(shí)現(xiàn)了服務(wù)器向客戶端主動(dòng)推送消息,本文介紹如何使用PHP和JS應(yīng)用websocket實(shí)現(xiàn)一個(gè)網(wǎng)頁實(shí)時(shí)聊天室。2021-05-05
php輸出控制函數(shù)和輸出函數(shù)生成靜態(tài)頁面
這篇文章主要為大家詳細(xì)介紹了php輸出控制函數(shù)和輸出函數(shù)生成靜態(tài)頁面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06

