json_encode正确识别中文解决方法

  • 内容
  • 评论
  • 相关

相信大家都很熟悉json_encode这个方法,这是用来将数组转换成一个json字符串的方法,例如

$data = json_encode(array(type=>'view',url=>'url',name=>"的"));
var_dump(data);

这个时侯你会得到一个意外的结果那就是false,介是为什么捏,这是因为这个函数只能解析unicode编码,因此中文不行囊,如何做呢,可以先将汉字urlencode(汉字),那么下面给出一个小程序处理一下子

/************************************************************** 
* 
* 使用特定function对数组中所有元素做处理 
* @param string &$array 要处理的字符串 
* @param string $function 要执行的函数 
* @return boolean $apply_to_keys_also 是否也应用到key上 
* @access public 
* 
*************************************************************/  
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--;  
}  
  
/************************************************************** 
* 
* 将数组转换为JSON字符串(兼容中文) 
* @param array $array 要转换的数组 
* @return string 转换得到的json字符串 
* @access public 
* 
*************************************************************/  
function JSON($array) {  
arrayRecursive($array, 'urlencode', true);  
$json = json_encode($array);  
return urldecode($json);  
}  
  
$array = array  
(  
'Name'=>'我是大熊猫',  
'Age'=>20  
);  
  
echo JSON($array);  

评论

0条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注