在 PHP 中,使用 json_encode()
函数将数据编码为 JSON 格式时,默认情况下,中文字符会被转义为 Unicode 形式,例如 \u4e2d\u6587
。如果您希望直接输出中文字符而不是转义形式,可以使用 JSON_UNESCAPED_UNICODE
选项。
1. 使用 JSON_UNESCAPED_UNICODE
1.1 基本用法
下面是如何使用 JSON_UNESCAPED_UNICODE
的示例:
<?php
$data = [
'greeting' => '你好',
'language' => '中文',
'message' => '欢迎使用 JSON_UNESCAPED_UNICODE!'
];
// 默认的 json_encode
$json_default = json_encode($data);
echo "默认编码:\n$json_default\n\n";
// 使用 JSON_UNESCAPED_UNICODE
$json_unicode = json_encode($data, JSON_UNESCAPED_UNICODE);
echo "使用 JSON_UNESCAPED_UNICODE:\n$json_unicode\n";
?>
1.2 输出结果
运行上述代码,您将看到如下输出:
默认编码:
{"greeting":"\u4f60\u597d","language":"\u4e2d\u6587","message":"\u6b22\u8fce\u4f7f\u7528 JSON_UNESCAPED_UNICODE!"}
使用 JSON_UNESCAPED_UNICODE:
{"greeting":"你好","language":"中文","message":"欢迎使用 JSON_UNESCAPED_UNICODE!"}
2. 适用场景
2.1 API 返回数据
在创建 API 时,使用 JSON_UNESCAPED_UNICODE
可以使返回的 JSON 数据更易于阅读,特别是当数据包含中文文本时。
2.2 前端处理
前端 JavaScript 可以直接处理中文字符,避免了额外的字符解码。
3. 结合其他选项
您可以将 JSON_UNESCAPED_UNICODE
与其他选项结合使用,例如:
$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo $json;
3.1 输出格式化的 JSON
使用 JSON_PRETTY_PRINT
可以使输出的 JSON 更加美观:
{
"greeting": "你好",
"language": "中文",
"message": "欢迎使用 JSON_UNESCAPED_UNICODE!"
}