欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么解決ajax傳到后臺(tái)php中文亂碼問題

這篇文章將為大家詳細(xì)講解有關(guān)怎么解決ajax傳到后臺(tái)php中文亂碼問題,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)于2013年開始,先為固陽等服務(wù)建站,固陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為固陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

ajax傳到后臺(tái)php中文亂碼的解決辦法:1、設(shè)置“iconv('utf-8','gb2312',$_POST['Data']);”;2、通過arrayRecursive以及JSON方法解決編碼問題即可。

怎么解決ajax傳到后臺(tái)php中文亂碼問題

本文操作環(huán)境:Windows7系統(tǒng),PHP7.1版,Dell G3電腦。

PHP中AJAX應(yīng)用中文亂碼解決方法

web應(yīng)用開發(fā)中經(jīng)常出現(xiàn)中文亂碼情況!

今天主要整理下思路:

出現(xiàn)亂碼的大多數(shù)情況是我們進(jìn)行AJAX時(shí)所遇到的!因?yàn)橹苯訑?shù)據(jù)庫讀取是不會(huì)有任何編碼上的問題的~

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ā)送!

如果我們的頁面是UTF-8那沒有問題!傳遞過去的中文數(shù)據(jù)不會(huì)亂碼!

如果是GB2312的話~問題就來了!GBK被UTF-8轉(zhuǎn)換后發(fā)送到后臺(tái),這時(shí)后臺(tái)直接接收到的已經(jīng)亂碼了!

(解決方法:后臺(tái)語言為PHP的情況下,iconv('utf-8','gb2312',$_POST['Data']);)

原理很簡(jiǎn)單:后臺(tái)直接接收是utf-8,而頁面都是GBK,那只要把接收到的數(shù)據(jù)再重新轉(zhuǎn)回為GBK就可以了!

這時(shí)再做數(shù)據(jù)庫操作就可以了!存入數(shù)據(jù)庫里的必定是正常的中文字符了!

2.后臺(tái)頁面讀取到數(shù)據(jù)庫里數(shù)據(jù)中含有中文字符,此時(shí)再回傳到JS前臺(tái)的情況下

PHP頁面從數(shù)據(jù)庫里讀取到了正常的中文字符想通過AJAX再回傳回去~

如果傳遞回去只是把數(shù)據(jù)不作任何處理直接以字符串的形式傳回去!這是沒有問題的!中文在前臺(tái)頁面上顯示一切正常!

但后臺(tái)數(shù)據(jù)我們一般是需要包裝一下!不然前臺(tái)接收到的數(shù)據(jù)會(huì)很難處理!

如果是PHP的話!那么我們現(xiàn)在一般用JSON進(jìn)行傳遞!這樣傳遞到前臺(tái)JS的數(shù)據(jù)就會(huì)非常容易解開并操作!

在PHP后臺(tái)進(jìn)行json轉(zhuǎn)換操作時(shí),問題就來了!

json轉(zhuǎn)換時(shí)會(huì)發(fā)現(xiàn)從數(shù)據(jù)庫讀取出來的中文又出現(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)過這些處理后你會(huì)發(fā)現(xiàn)后臺(tái)PHP從數(shù)據(jù)庫讀出來的中文字符成功的轉(zhuǎn)成了json格式并且中文顯示一切正常!

當(dāng)然此時(shí)前臺(tái)接收到的數(shù)據(jù)就是JSON格式的了并且中文字符也是正常!

好了~~就是這些思路~網(wǎng)上方法有很多!看得有點(diǎn)亂~主要是記住思路!

然后就看用什么函數(shù)用什么方法解決相關(guān)編碼問題就可以了!

比較煩那種JS前臺(tái)AJAX需要轉(zhuǎn)碼!后臺(tái)再解碼!有的還需要轉(zhuǎn)兩次!

目前我寫的這些都是在PHP后臺(tái)語言代碼的情況下有效的.

前臺(tái)即使是GBK也不用作任何轉(zhuǎn)碼操作,全部只在后臺(tái)PHP代碼里面作相關(guān)轉(zhuǎn)換就可以了!!

關(guān)于“怎么解決ajax傳到后臺(tái)php中文亂碼問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)頁名稱:怎么解決ajax傳到后臺(tái)php中文亂碼問題
網(wǎng)站網(wǎng)址:http://chinadenli.net/article18/gohogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)標(biāo)簽優(yōu)化、營銷型網(wǎng)站建設(shè)全網(wǎng)營銷推廣、網(wǎng)站設(shè)計(jì)網(wǎng)站排名

廣告

聲明:本網(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)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司