創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為文水企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站,文水網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何解決php應(yīng)用ajax返回亂碼的問(wèn)題,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
php應(yīng)用ajax返回亂碼的解決辦法:1、把接收到的數(shù)據(jù)再重新轉(zhuǎn)回為GBK,代碼為【iconv(utf-8,'gb2312'$_POST[Data])】;2、用JSON進(jìn)行傳遞,代碼為【$json_string=JSON($data)】。
php應(yīng)用ajax返回亂碼的解決辦法:
1、從前臺(tái)JS提交數(shù)據(jù)到后臺(tái)的情況下
AJAX數(shù)據(jù)時(shí),不管是直接用底層xmlHttprequest還是用jQuery的ajax進(jìn)行數(shù)據(jù)傳遞時(shí)!ajax都會(huì)使用utf-8進(jìn)行編碼后發(fā)送!
如果我們的頁(yè)面是UTF-8那沒(méi)有問(wèn)題!傳遞過(guò)去的中文數(shù)據(jù)不會(huì)亂碼!
如果是GB2312的話~問(wèn)題就來(lái)了!GBK被UTF-8轉(zhuǎn)換后發(fā)送到后臺(tái),這時(shí)后臺(tái)直接接收到的已經(jīng)亂碼了!
解決方法:后臺(tái)語(yǔ)言為PHP的情況下
iconv('utf-8','gb2312',$_POST['Data']);
原理很簡(jiǎn)單:后臺(tái)直接接收是utf-8,而頁(yè)面都是GBK,那只要把接收到的數(shù)據(jù)再重新轉(zhuǎn)回為GBK就可以了!
這時(shí)再做數(shù)據(jù)庫(kù)操作就可以了!存入數(shù)據(jù)庫(kù)里的必定是正常的中文字符了!
2、后臺(tái)頁(yè)面讀取到數(shù)據(jù)庫(kù)里數(shù)據(jù)中含有中文字符,此時(shí)再回傳到JS前臺(tái)的情況下
PHP頁(yè)面從數(shù)據(jù)庫(kù)里讀取到了正常的中文字符想通過(guò)AJAX再回傳回去~
如果傳遞回去只是把數(shù)據(jù)不作任何處理直接以字符串的形式傳回去!這是沒(méi)有問(wèn)題的!中文在前臺(tái)頁(yè)面上顯示一切正常!
但后臺(tái)數(shù)據(jù)我們一般是需要包裝一下!不然前臺(tái)接收到的數(shù)據(jù)會(huì)很難處理!
如果是PHP的話!那么我們現(xiàn)在一般用JSON進(jìn)行傳遞!這樣傳遞到前臺(tái)JS的數(shù)據(jù)就會(huì)非常容易解開(kāi)并操作!
在PHP后臺(tái)進(jìn)行json轉(zhuǎn)換操作時(shí),問(wèn)題就來(lái)了!
json轉(zhuǎn)換時(shí)會(huì)發(fā)現(xiàn)從數(shù)據(jù)庫(kù)讀取出來(lái)的中文又出現(xiàn)NULL或其它不正常的情況,這是因?yàn)镴SON只轉(zhuǎn)義encoding編碼!咱也甭管他轉(zhuǎn)義什么編碼!
反正JSON轉(zhuǎn)中文出現(xiàn)亂碼的情況~~
解決辦法如下:
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); } $json_string=JSON($data); //$obj = json_decode($json_string); print_r($json_string);
經(jīng)過(guò)這些處理后你會(huì)發(fā)現(xiàn)后臺(tái)PHP從數(shù)據(jù)庫(kù)讀出來(lái)的中文字符成功的轉(zhuǎn)成了json格式并且中文顯示一切正常!
當(dāng)然此時(shí)前臺(tái)接收到的數(shù)據(jù)就是JSON格式的了并且中文字符也是正常!
上述就是小編為大家分享的如何解決php應(yīng)用ajax返回亂碼的問(wèn)題了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。