使用 JSON_UNESCAPED_UNICODE 可使中文等 UTF-8 字符原样输出,避免 \u 转义;需确保数据为合法 UTF-8,并配合 header('Content-Type: application/json; charset=utf-8')。

直接在 json_encode() 的第二个参数里加上 JSON_UNESCAPED_UNICODE 就行,它能让中文、日文、阿拉伯文等 UTF-8 字符原样输出,不转成 \u4f60\u597d 这类 Unicode 转义序列。
基础用法:加一个常量就生效
只要 PHP 版本 ≥ 5.4(当前已是 2026 年,完全满足),代码很简单:
$data = ['姓名' => '李四', '城市' => '杭州'];$json = json_encode($data, JSON_UNESCAPED_UNICODE);- 输出结果是:
{"姓名":"李四","城市":"杭州"},不是{"\u59d3\u540d":"\u674e\u56db",...}
常见组合用法:兼顾可读性与兼容性
实际项目中常和其他标志一起用,比如:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
-
JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT:中文不转义 + 换行缩进,适合调试和日志 -
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES:中文不转义 + 不转义正斜杠(/),避免被误认为 HTML 结束标签 -
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT:三者合用,开发阶段很友好
必须注意的前置条件
这个选项只负责“不转义”,但前提是数据本身得是合法 UTF-8:
立即学习“PHP免费学习笔记(深入)”;
- PHP 文件保存为 UTF-8 无 BOM 格式(编辑器里确认一下)
- 数据库连接、查询结果也需设为 UTF-8(如 MySQL 加
SET NAMES utf8mb4) - 如果输入字符串本身含 GBK 或乱码字节,
json_encode可能返回false,建议配合json_last_error()检查
配套 HTTP 响应头别漏掉
后端输出 JSON 时,光内容对还不行,浏览器或前端才能正确解析:
- 加上
header('Content-Type: application/json; charset=utf-8'); - 这句确保响应体被识别为 UTF-8 编码的 JSON,避免某些旧客户端二次解码出错


















