Convertir un objet php en code chinois tronqué json

PHPz
Libérer: 2023-05-22 21:36:06
original
653 Les gens l'ont consulté

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 中包含中文时,就会出现乱码的情况,如下图所示:

Convertir un objet php en code chinois tronqué 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');
?>
Copier après la connexion

加入这一段代码后,输出的字符串中的中文就会被正确地转换为 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);
?>
Copier après la connexion

加入这个参数后,输出的 JSON 中的中文就会被正确输出,而不是乱码。

方法三:修改 PHP 核心设置

在 PHP 核心设置中,有一个参数 default_charset,它表示输出一些文本时使用的默认字符编码。如果该参数被设置为 UTF-8,那么 JSON 输出时中文也会被正确地编码。

示例代码如下:

<?php
ini_set('default_charset', 'utf-8');
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr);
?>
Copier après la connexion

将这段代码放在需要输出 JSON 的脚本中,就可以保证 JSON 中的中文不会出现乱码了。

结束语

在进行 Web 开发时,使用 JSON 格式进行数据传输是非常常见的。在 PHP 中,使用 json_encode() 函数将对象序列化成 JSON 格式的字符串时,可能会出现中文乱码的情况。本文介绍了三种解决方法:手动将中文编码、设置 json_encode() 的参数和修改 PHP 核心设置中的 default_charset

Description du problème

Dans le code PHP, nous utilisons la fonction 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. 🎜

Méthode 2 : Définir les paramètres de json_encode()

🎜Ajouter le paramètre 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. 🎜

Méthode 3 : Modifier les paramètres de base de PHP

🎜Dans les paramètres de base de PHP, il existe un paramètre 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é. 🎜

Conclusion

🎜Lors du développement Web, il est très courant d'utiliser le format JSON pour la transmission de données. En PHP, lors de l'utilisation de la fonction 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal