json_encode返回null解决方法
时间:2019-11-20 08:52:02 来源:igfitidea点击:
json_encode返回null
json_last_error 返回5
诊断过程
json_encode()时返回null。
这时,可以使用json_last_error检查报错的原因。
根据json_last_error_msg信息
JSON_ERROR_NONE => 'No error', 没有错误 JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', json_encode错误 超过最大堆栈深度 JSON_ERROR_STATE_MISMATCH => 'State mismatch (invalid or malformed JSON)', json_encode错误 状态不匹配(JSON无效或格式错误) JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded', json_encode错误 控制字符错误,可能编码错误 JSON_ERROR_SYNTAX => 'Syntax error', json_encode错误,语法错误 JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded' JSON报错,错误代码5 UTF-8字符格式错误,可能编码错误
返回代码5表示 Malformed UTF-8 characters, possibly incorrectly encoded UTF-8字符格式错误,可能编码错误
解决方案
将字符串转换成UTF-8
方法1
$string = mb_convert_encoding($string, 'UTF-8', 'UTF-8'); $res = json_encode(['theitroad'=> $string]);
方法2
function utf8ize( $mixed ) { if (is_array($mixed)) { foreach ($mixed as $key => $value) { $mixed[$key] = utf8ize($value); } } elseif (is_string($mixed)) { return mb_convert_encoding($mixed, "UTF-8", "UTF-8"); } return $mixed; } $string = json_encode( utf8ize( $string ) );