«

PHP解析JSON中文转义json_encode解决

时间:2026-11-15 07:18     作者:emer     分类: PHP


前言

json_encode 后中文变成 \uXXXX 转义码,影响可读性和前端处理。加 JSON_UNESCAPED_UNICODE 参数即可保留中文。本文讲解编码参数、解析 JSON、处理错误和中文长度注意。

操作步骤

1. 输出不转义中文

$data = ['name' => '刘馨怡'];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
// {"name":"刘馨怡"}

2. 同时美化输出

echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

3. 解析 JSON 字符串

$obj = json_decode($json, true); // true 返回数组

4. 检查解析错误

$obj = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'JSON 错误:' . json_last_error_msg();
}

5. 处理 UTF-8 合法性

$json = json_encode($data, JSON_UNESCAPED_UNICODE);

6. 保留换行斜杠等控制符按需加参数。

常见坑

  1. 漏加 JSON_UNESCAPED_UNICODE,中文全变 \u 码。
  2. json_decode 第二参不传 true,得到对象而非数组。
  3. 输入含非法 UTF-8,encode 返回 false。
  4. 中文引号、换行未转义,前端解析失败。
  5. JSON 不支持关联外的循环引用,会报错。
  6. 数字精度问题用 JSON_PRESERVE_ZERO_FRACTION。
  7. HTTP 响应要设 Content-Type: application/json。

总结

json_encode 加 JSON_UNESCAPED_UNICODE 保留中文,PRETTY_PRINT 美化;json_decode 传 true 得数组,用 json_last_error_msg 查错。输入必须合法 UTF-8,输出设 JSON 响应头。

遇到问题加QQ23979811 协助处理

标签: PHP json_encode 中文 转义