您的位置:首页 > 编程语言 > PHP开发

PHP 保持中文编码 json_encode 函数

2015-09-15 18:00 671 查看
最近在做微信自定义菜单,发现调用json_encode后会将中文转为unicode编码,而微信的接口却不支持。所以分享下json_encode保持中文编码的方法。
1,如果php是5.4版本以上,直接加上
JSON_UNESCAPED_UNICODE 参数即可(亲测OK)
$test = json_encode(“试试”, JSON_UNESCAPED_UNICODE);

2,先将中文字段转成urlencode,然后json_encode,最后再用urldecode,也可以保证中文不会被转成unicode
相关函数如下,亲测

/**************************************************************
*
*    使用特定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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: