如何解决php json_encode乱码的问题-PHP问题

资源魔 103 0

php json_encode乱码的处理方法:起首把数据库编码以及页面编码都改成UTF8;而后应用“json_encode”将PHP中的array数组转为JSON字符串;最初用函数urlencode解决下便可。

PHP json_encode中文乱码处理办法

  置信不少人正在应用Ajax与后盾php页面进行交互的时分都碰着过中文乱码的成绩。JSON作为一种轻量级的数据替换格局,备受亲睐,然而用PHP 作为后盾交互,容易呈现中文乱码的成绩。JSON以及js同样,关于客户真个字符都是以UTF8的方式进行解决的,也就是说,应用JSON作为提交以及接纳的 数据格局时字符都采纳UTF8编码解决,当咱们的页面编码以及数据库编码没有是采纳UTF8的时分,就极容易呈现中文乱码的成绩。处理方法天然是正在用js或许 PHP解决JSON数据的时分都采纳UTF8的方式。

  PHP5.2或以上的版本把json_encode作为内置函数来用,给网站制造者带来了很年夜的不便,然而咱们必需留意到json_encode只支持UTF8编码的字符,不然,中文乱码或许空值就呈现了。

处理方法分为如下两个步骤。

Step1

保障正在应用JSON解决的时分字符是以UTF8编码的。详细咱们能够把数据库编码以及页面编码都改成UTF8。当然喜爱用gbk编码的话,能够正在进行JSON解决前,把字符转为UTF8方式。正在PHP中有以下办法:

 <?php  
      $data="JSON中文";  
      $newData=iconv("GB2312","UTF-8//IGNORE",$data);  
      echo $newData;  
      //ignore的意义是疏忽转换时的谬误,假如不ignore参数,一切该字符前面的字符都没有会被保留。  
      //或是("GB2312","UTF-8",$data);  
 ?>

Step2

后盾PHP页面(页面编码为UTF-8或许曾经把字符转为UTF-8)应用json_encode将PHP中的array数组转为JSON字符串。例如:

 <?php  
     $testJSON=array('name'=>'中文字符串','value'=>'test');  
    echo json_encode($testJSON);  
 ?>

查看输入后果为:

{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}

可见即便用UTF8编码的字符,应用json_encode也呈现了中文乱码。处理方法是正在应用json_encode以前把字符用函数urlencode()解决一下,而后再json_encode,输入后果的时分正在用函数urldecode()转回来。详细以下:

 <?php  
     $testJSON=array('name'=>'中文字符串','value'=>'test');  
     //echo json_encode($testJSON);  
     foreach ( $testJSON as $key => $value ) {  
         $testJSON[$key] = urlencode ( $value );  
     }  
     echo urldecode ( json_encode ( $testJSON ) );  
 ?>

查看输入后果为:

{“name”:”中文字符串”,”value”:”test”}

到此,胜利地输入了中文字符。随 意应用json_encode吧。这样子正在PHP后盾输入的JSON字符串正在前台javascript中Ajax接纳后eval进去也没有会呈现中文乱码, 由于js正在解决JSON格局数据是也是以UTF8的方式进行的,与PHP相似,故接纳PHP页面的JSON字符串没有会呈现成绩。

更多相干文章,请拜访PHP中文网!

以上就是若何处理php json_encode乱码的成绩的具体内容,更多请存眷资源魔其它相干文章!

标签: php教程 json_encode() php故障解决 php使用问题

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