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

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

所以要解決亂碼,要在后臺進行數(shù)據(jù)編碼轉(zhuǎn)換,后臺接收到的數(shù)據(jù)用PHP的mb_convert_encoding("要轉(zhuǎn)換的數(shù)據(jù)","gb2312","UTF-8")進行轉(zhuǎn)換后存儲到數(shù)據(jù)庫。而后臺返回到前臺的中文數(shù)據(jù)也要用mb_convert_encoding("要返回的數(shù)據(jù)","UTF-8","gb2312")轉(zhuǎn)換后返回。
相關(guān)文章
php empty()與isset()區(qū)別的詳細介紹
本篇文章是對php中empty()與isset()的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-06-06mysql_escape_string()函數(shù)用法分析
這篇文章主要介紹了mysql_escape_string()函數(shù)用法,結(jié)合實例形式講述了mysql_escape_string()函數(shù)的功能,并分析了mysql_escape_string的使用技巧與注意事項,需要的朋友可以參考下2016-04-04php用數(shù)組返回無限分類的列表數(shù)據(jù)的代碼
php自定義函數(shù)之用數(shù)組返回無限分類的列表數(shù)據(jù),這樣的實現(xiàn)可以提高執(zhí)行的效率不要每次都從數(shù)據(jù)庫讀取數(shù)據(jù)。2010-08-08