這篇文章將為大家詳細(xì)講解有關(guān)解決php ajax傳值亂碼問題的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、新?lián)峋W(wǎng)站維護(hù)、網(wǎng)站推廣。
php ajax傳值亂碼的解決辦法:1、將前后臺(tái)頁(yè)面以及數(shù)據(jù)庫(kù)統(tǒng)一采用UTF8編碼;2、在存入數(shù)據(jù)庫(kù)時(shí)使用“MySQL_query("set names gb2312");”方法;3、使用ICONV函數(shù)對(duì)從數(shù)據(jù)庫(kù)中取出的字符串進(jìn)行編碼轉(zhuǎn)換。
在php網(wǎng)站開發(fā)中,為了增加用戶體驗(yàn)度,Ajax是一種經(jīng)常使用的技術(shù),但是對(duì)于初學(xué)者來說,時(shí)常會(huì)碰到Ajax傳值中文字符串時(shí)變成亂碼的問題,有什么辦法可以解決PHP AJAX傳值中文字符亂碼的問題呢?
我們知道Ajax技術(shù)由JavaScript演變而來,而javascript使用UTF-8編碼,當(dāng)前后臺(tái)頁(yè)面采用GBK或者其他編碼,同時(shí)沒有進(jìn)行編碼轉(zhuǎn)換時(shí),就會(huì)出現(xiàn)中文字符亂碼問題。
PHP Ajax傳值中文字符亂碼解決方法
方法一、前后臺(tái)頁(yè)面以及數(shù)據(jù)庫(kù)統(tǒng)一采用UTF8編碼,這是最簡(jiǎn)單的方法。
方法二、當(dāng)網(wǎng)站已采用了諸如GBK/GB2312編碼時(shí),分兩種情況:
1、Ajax發(fā)送中文字符、PHP(后臺(tái)程序)進(jìn)行接收發(fā)生亂碼時(shí),使用GBK與UTF8的轉(zhuǎn)換函數(shù)對(duì)接受的字符串進(jìn)行編碼轉(zhuǎn)換,再存入相關(guān)數(shù)據(jù)庫(kù),這里假設(shè)數(shù)據(jù)庫(kù)采用的編碼是GBK或者GB2312,如果配置的PHP運(yùn)行環(huán)境支持ICONV函數(shù),你也可使用ICONV函數(shù)進(jìn)行編碼轉(zhuǎn)換,然后在存入數(shù)據(jù)庫(kù)時(shí)
mysql_query("set names gb2312");
即可解決Ajax傳值中文亂碼問題。
2、PHP發(fā)送中文字符、Ajax(前臺(tái)頁(yè)面)進(jìn)行接收發(fā)生亂碼時(shí),同樣可以使用ICONV函數(shù)對(duì)從數(shù)據(jù)庫(kù)中取出的字符串進(jìn)行編碼轉(zhuǎn)換,再傳值至Ajax前臺(tái),即responseText。或者在PHP(后臺(tái)程序)輸出字符流之前加上
header('Content-type: text/html;charset=gb2312');
即可。特別指出:在使用Ajax做多級(jí)聯(lián)動(dòng)(比如省份城市聯(lián)動(dòng))時(shí),采用xml交互形式,在輸出XML之前也必須加上header。
同時(shí)貼出GB2312與UTF8的轉(zhuǎn)換函數(shù),方便大家在遇到Ajax中文亂碼問題時(shí)多一種解決方法。
function gb2utf8($gb,$filename) { if(!trim($gb)) return $gb; //$filename="gb2312.txt"; $tmp=file($filename); $codetable=array(); while(list($key,$value)=each($tmp)) $codetable[hexdec(substr($value,0,6))]=substr($value,7,6); $utf8=""; while($gb) { if (ord(substr($gb,0,1))>127) { $thisgb=substr($gb,0,2); $gb=substr($gb,2,strlen($gb)); $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080])); } else { $gb=substr($gb,1,strlen($gb)); $utf8.=u2utf8(substr($gb,0,1)); } } $ret=""; for($i=0;$i<strlen($utf8);$i+=3) $ret.=chr(substr($utf8,$i,3)); return $ret; } function u2utf8($c) { for($i=0;$i<count($c);$i++) $str=""; if ($c < 0x80) { $str.=$c; } else if ($c < 0x800) { $str.=(0xC0 $c>>6); $str.=(0x80 $c & 0x3F); } else if ($c < 0x10000) { $str.=(0xE0 $c>>12); $str.=(0x80 $c>>6 & 0x3F); $str.=(0x80 $c & 0x3F); } else if ($c < 0x200000) { $str.=(0xF0 $c>>18); $str.=(0x80 $c>>12 & 0x3F); $str.=(0x80 $c>>6 & 0x3F); $str.=(0x80 $c & 0x3F); } return $str; }
注:此函數(shù)需要使用GB2312中文編碼表,請(qǐng)點(diǎn)擊這里下載,由于是采用gb2312,對(duì)于一些比較生僻的詞在轉(zhuǎn)換時(shí)可能會(huì)出現(xiàn)亂碼。
關(guān)于解決php ajax傳值亂碼問題的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)頁(yè)題目:解決phpajax傳值亂碼問題的方法
網(wǎng)址分享:http://chinadenli.net/article26/gogscg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制網(wǎng)站、網(wǎng)站收錄、ChatGPT、網(wǎng)站改版、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)