php应用ajax返回乱码怎么办?-PHP问题

资源魔 33 0

php使用ajax前往乱码的处理方法:一、把接纳到的数据再从新转回为GBK,代码为【iconv(utf-8,'gb2312'$_POST[Data])】;二、用JSON进行通报,代码为【$json_string=JSON($data)】。

php使用ajax前往乱码的处理方法:

一、畴前台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就能够了!

这时候再做数据库操作就能够了!存入数据库里的必然是失常的中文字符了!

二、后盾页面读取到数据库里数据中含有中文字符,此时再回传到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格局的了而且中文字符也是失常!

相干学习保举:PHP编程从入门到通晓

以上就是php使用ajax前往乱码怎样办?的具体内容,更多请存眷资源魔其它相干文章!

标签: php ajax php教程 php故障解决 php使用问题 返回乱码

抱歉,评论功能暂时关闭!