php ajax取得中文亂碼怎麼辦

藏色散人
發布: 2023-03-12 14:38:01
原創
2324 人瀏覽過

php ajax取得中文亂碼的解決方法:1、執行「iconv('utf-8','gb2312',$_POST['Data']);)」代碼;2、透過PHP從資料庫讀出中文字元並轉成json格式即可。

php ajax取得中文亂碼怎麼辦

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php ajax取得中文亂碼怎麼辦?

PHP中AJAX應用中文亂碼解決方法

#web應用開發中經常出現中文亂碼情況!

今天主要整理下思路:

出現亂碼的大多數情況是我們進行AJAX時所遇到的!因為直接資料庫讀取是不會有任何編碼上的問題的~

 

1.從前台JS提交資料到後台的情況下

AJAX資料時,不管是直接用底層xmlHttprequest還是用jQuery的ajax進行資料傳遞時!ajax都會使用utf-8進行編碼後發送!

如果我們的頁面是UTF-8那沒有問題!傳遞過去的中文資料不會亂碼!

如果是GB2312的話~問題就來了!GBK被UTF-8轉換後發送到後台,這時後台直接接收到的已經亂碼了!

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

原理很簡單:後台直接接收是utf-8,而頁面都是GBK,那麼只要把接收到的資料再重新轉回為GBK就可以了!

這時再做資料庫操作就可以了!存入資料庫裡的必定是正常的中文字元了!

 

2.後台頁面讀取到資料庫裡資料中含有中文字元,此時再回傳到JS前台的情況下

PHP頁面從資料庫裡讀取到了正常的中文字元想透過AJAX再回傳回去~

#如果傳遞回去只是把資料不作任何處理直接以字串的形式傳回去!這是沒有問題的!中文在前台頁面上顯示一切正常!

但後台數據我們一般是需要包裝一下!不然前台接收到的數據會很難處理!

如果是PHP的話!那麼我們現在一般用JSON進行傳遞!這樣傳遞到前台JS的資料就會非常容易解開並操作!

在PHP後台進行json轉換操作時,問題就來了!

json轉換時會發現從資料庫讀取出來的中文又出現NULL或其它不正常的情況,這是因為JSON只轉義encoding編碼!咱也甭管他轉義什麼編碼!

反正JSON轉中文出現亂碼的情況~~

解決辦法如下:

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);
登入後複製

 

#經過這些處理後你會發現後台PHP從資料庫讀出來的中文字元成功的轉成了json格式並且中文顯示一切正常!

當然此時前台接收到的資料就是JSON格式的了並且中文字元也是正常!

 

好了~~就是這些思路~網上方法有很多!看得有點亂~主要是記住思路!

然後就看用什麼函數用什麼方法解決相關編碼問題就可以了!

比較煩那種JS前台AJAX需要轉碼!後台再解碼!有的還需要轉兩次!

目前我寫的這些都是在PHP後台語言代碼的情況下有效的.

前台即使是GBK也不用作任何轉碼操作,全部只在後台PHP代碼裡面作相關轉換就可以了!!

推薦學習:《PHP影片教學

以上是php ajax取得中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板