Lors du développement Web, JSON
est souvent utilisé pour convertir des objets en données JSON
et les transmettre de manière asynchrone via AJAX
. Cependant, lorsque vous utilisez le backend PHP pour une sortie au format JSON
, vous pouvez rencontrer des caractères chinois tronqués après la conversion de l'objet au format JSON
. Cet article explique comment résoudre ce problème. JSON
,将对象转换为 JSON
数据,并通过 AJAX
进行异步传输。然而在使用 PHP 后台进行 JSON
格式化输出时,可能会遇到对象转换为 JSON
格式后中文乱码的情况。本文将介绍如何解决这个问题。
在 PHP 代码中,我们使用 json_encode()
函数将对象转换成 JSON 格式的字符串,然后通过 echo
输出。但是,当 JSON 中包含中文时,就会出现乱码的情况,如下图所示:
清晰的中文被转换为了乱码,这对用户和开发者都是不友好的。接下来,我们将介绍三种解决方法。
在 json_encode()
函数前加上 json_encode()->mb_convert_encoding()
,将中文手动编码成 utf-8。
示例代码如下:
<?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,直接保留中文即可。
示例代码如下:
<?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_encode()
pour convertir l'objet en chaîne au format JSON, puis le sortons via echo . Cependant, lorsque JSON contient du chinois, des caractères tronqués apparaîtront, comme le montre la figure suivante : 🎜🎜<img src="https://img-blog.csdnimg.cn/20181218104120173.png" alt="Exemple de code chinois tronqué " title="Exemple de code chinois tronqué">🎜🎜Les caractères chinois clairs sont convertis en caractères tronqués, ce qui n'est pas convivial pour les utilisateurs et les développeurs. Ensuite, nous présenterons trois solutions. 🎜<h2>Solution</h2>
<h3>Méthode 1 : Encoder manuellement le chinois</h3>🎜Ajoutez <code>json_encode()->mb_convert_encoding avant la fonction <code>json_encode()
(), encodez manuellement le chinois en utf-8. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Après avoir ajouté ce morceau de code, le chinois dans la chaîne de sortie sera correctement converti en codage utf-8 au lieu de caractères tronqués. 🎜json_encode()
JSON_UNESCAPED_UNICODE
dans la fonction json_encode()
à dire La fonction json_encode()
n'encode pas le chinois en Unicode, conserve simplement le chinois. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Après l'ajout de ce paramètre, le chinois dans le JSON de sortie sera affiché correctement au lieu des caractères tronqués. 🎜default_charset
, qui indique l'encodage de caractères par défaut utilisé lors de la sortie de texte. Si ce paramètre est défini sur UTF-8, le chinois sera correctement codé lors de la sortie JSON. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Mettez ce code dans le script qui doit générer du JSON pour garantir que le chinois en JSON ne sera pas tronqué. 🎜json_encode()
pour sérialiser un objet dans une chaîne au format JSON, des caractères chinois tronqués peuvent apparaître. Cet article présente trois solutions : encoder manuellement le chinois, définir les paramètres de json_encode()
et modifier le paramètre default_charset
dans les paramètres de base de PHP. Ces méthodes peuvent résoudre efficacement le problème des caractères chinois JSON tronqués, et l'utilisation spécifique peut être sélectionnée en fonction de la situation réelle. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!