插件窝 干货文章 php jsonencode中文转码怎么解決

php jsonencode中文转码怎么解決

json Unicode 字符 张三 946    来源:    2025-03-17

在PHP中,使用 json_encode 函数将数据转换为JSON格式时,如果数据中包含中文字符,默认情况下这些字符会被转换为Unicode编码(例如 \u4e2d\u6587)。如果你希望保留中文字符而不是转换为Unicode编码,可以通过设置 json_encode 的选项参数来实现。

解决方案

json_encode 函数中,使用 JSON_UNESCAPED_UNICODE 选项可以避免中文字符被转义为Unicode编码。

示例代码

<?php
$data = array(
    'name' => '张三',
    'age' => 25
);

// 使用 JSON_UNESCAPED_UNICODE 选项
$json = json_encode($data, JSON_UNESCAPED_UNICODE);

echo $json;
?>

输出结果

{"name":"张三","age":25}

解释

  • JSON_UNESCAPED_UNICODEjson_encode 函数的一个选项,它告诉函数不要将非ASCII字符(如中文字符)转义为Unicode编码。
  • 如果不使用这个选项,输出将会是 {"name":"\u5f20\u4e09","age":25}

其他注意事项

  1. JSON编码的字符集:确保你的PHP文件和数据库连接使用的是UTF-8编码,以避免字符集不一致导致的乱码问题。
  2. HTTP头设置:如果你是通过HTTP接口返回JSON数据,确保在响应头中设置 Content-Typeapplication/json; charset=utf-8,以便客户端正确解析。

示例:设置HTTP头

<?php
header('Content-Type: application/json; charset=utf-8');

$data = array(
    'name' => '张三',
    'age' => 25
);

$json = json_encode($data, JSON_UNESCAPED_UNICODE);

echo $json;
?>

通过以上方法,你可以确保在PHP中使用 json_encode 时,中文字符不会被转义为Unicode编码,从而保留原始的中文字符。