json_encode()
编码处理,记录到 错误日志中,方便后期问题排查
但是,此时发现,json_encode()
返回的是 false|NULL
,无法满足我的需求
通过网上的建议,找到一种解决方案 :【PHP json_decode/json_encode 中文内容为NULL或乱码】
/**************************************************************
*
* 处理因为数组元素中含有中文乱码时的问题
* @param string &$array 要处理的字符串
* @param string $function 要执行的函数
* @return boolean $apply_to_keys_also 是否也应用到key上
* @access public
*
*************************************************************/
function arrayRecursive(&$array, $function = 'urlencode', $apply_to_keys_also = true)
{
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]);
}
}
}
}
/**
* 处理因为数组元素中含有中文乱码问题时,json_encode优化方法
* @param $array
* @return string
*/
function json_encode_mz_urlencode($array){
arrayRecursive($array);
$json = json_encode($array);
return urldecode($json);
}
ThinkPHP5
框架下的处理方式,调用如下: Log::error('导出任务队列添加失败:'.json_encode_mz_urlencode($error));