在进行 web 开发时,经常会用到 json,将对象转换为 json 数据,并通过 ajax 进行异步传输。然而在使用 php 后台进行 json 格式化输出时,可能会遇到对象转换为 json 格式后中文乱码的情况。本文将介绍如何解决这个问题。
在 PHP 代码中,我们使用 json_encode() 函数将对象转换成 JSON 格式的字符串,然后通过 echo 输出。但是,当 JSON 中包含中文时,就会出现乱码的情况,如下图所示:

清晰的中文被转换为了乱码,这对用户和开发者都是不友好的。接下来,我们将介绍三种解决方法。
在 json_encode() 函数前加上 json_encode()->mb_convert_encoding(),将中文手动编码成 utf-8。
立即学习“PHP免费学习笔记(深入)”;
示例代码如下:
<?php
$arr = [
'name' => '张三',
'age' => 18,
'gender' => '男'
];
echo mb_convert_encoding(json_encode($arr, JSON_UNESCAPED_UNICODE), 'UTF-8');
?>加入这一段代码后,输出的字符串中的中文就会被正确地转换为 utf-8 编码,而不是乱码。
json_encode() 的参数在 json_encode() 函数中添加 JSON_UNESCAPED_UNICODE 参数,告诉 json_encode() 函数不要将中文编码成 Unicode,直接保留中文即可。
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
示例代码如下:
<?php
$arr = [
'name' => '张三',
'age' => 18,
'gender' => '男'
];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>加入这个参数后,输出的 JSON 中的中文就会被正确输出,而不是乱码。
在 PHP 核心设置中,有一个参数 default_charset,它表示输出一些文本时使用的默认字符编码。如果该参数被设置为 UTF-8,那么 JSON 输出时中文也会被正确地编码。
示例代码如下:
<?php
ini_set('default_charset', 'utf-8');
$arr = [
'name' => '张三',
'age' => 18,
'gender' => '男'
];
echo json_encode($arr);
?>将这段代码放在需要输出 JSON 的脚本中,就可以保证 JSON 中的中文不会出现乱码了。
在进行 Web 开发时,使用 JSON 格式进行数据传输是非常常见的。在 PHP 中,使用 json_encode() 函数将对象序列化成 JSON 格式的字符串时,可能会出现中文乱码的情况。本文介绍了三种解决方法:手动将中文编码、设置 json_encode() 的参数和修改 PHP 核心设置中的 default_charset 参数。这些方法都能够有效地解决 JSON 中文乱码的问题,具体的使用可根据实际情况选择。
以上就是php对象转json中文乱码的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号