json_encode处理json数据中文乱码

今天使用json_encode 把一个数组转换成json数据,echo处理的时候,显示为null。去查了php手册。

 该函数只能接受 UTF-8 编码的数据。

在网上搜了下,找到了解决方法。

 1 <?php
 2 
 3     /**************************************************************
 4      *
 5      *  使用特定function对数组中所有元素做处理
 6      *  @param  string  &$array     要处理的字符串
 7      *  @param  string  $function   要执行的函数
 8      *  @return boolean $apply_to_keys_also     是否也应用到key上
 9      *  @access public
10      *
11      *************************************************************/
12     function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
13     {
14         static $recursive_counter = 0;
15         if (++$recursive_counter > 1000) {
16             die('possible deep recursion attack');
17         }
18         foreach ($array as $key => $value) {
19             if (is_array($value)) {
20                 arrayRecursive($array[$key], $function, $apply_to_keys_also);
21             } else {
22             $array[$key] = $function($value);
23             }
24       
25             if ($apply_to_keys_also && is_string($key)) {
26                 $new_key = $function($key);
27                 if ($new_key != $key) {
28                     $array[$new_key] = $array[$key];
29                     unset($array[$key]);
30                 }
31             }
32     }
33         $recursive_counter--;
34     }
35       
36     /**************************************************************
37      *
38      *  将数组转换为JSON字符串(兼容中文)
39      *  @param  array   $array      要转换的数组
40      *  @access public
41      *
42      *************************************************************/
43     function JSON($array) {
44         arrayRecursive($array, 'urlencode', true);
45         $json = json_encode($array);
46         return urldecode($json);
47     }
48 
49 //使用方法 echo JSON($array);

 

posted @ 2014-02-16 16:53  闲云-野鹤  阅读(403)  评论(0编辑  收藏  举报