疑难答疑 PHP服务端返回Json问题

我们需要在不断的经验积累中去完善我们的编程思路,灵活运用PHP语言来帮助我们实现需要的功能。用Extjs接收PHP服务端返回的Json结果时,发现只要是汉字(从SQLServer取得)都是空字符,对于这个PHP服务端返回Json问题,非常苦恼。#t#

后来看json_encode的文档才知道,它只能编码UTF-8的字符。这个问题就是返回的字符是GB2312,怎么变为UTF-8,并且最好是将整个数组进行UTF-8的转换。经过搜索有以下代码解决PHP服务端返回Json问题:

  1. function encodeUTF8($array)   
  2. {   
  3. foreach($array as $key=>$value)   
  4. {   
  5. if(!is_array($value))   
  6. {   
  7. $array[$key]=mb_convert
    _encoding($value,"UTF-8","GBK");   
  8. }   
  9. else   
  10. {   
  11. encodeUTF8($array[$key]);   
  12. }   
  13. }   
  14. return $array;   
  15. }  

每次返回结果时:

 

 
 
 
  1. echo '{"total":"'.$rscount.'
    ","results":'.json_encode
    (encodeUTF8($result)).'}'; 

以上这段代码就是PHP服务端返回Json问题的具体解决方法。

THE END