Maison  >  Article  >  développement back-end  >  Des caractères tronqués apparaissent lorsque les données JSON sont converties en tableau en php

Des caractères tronqués apparaissent lorsque les données JSON sont converties en tableau en php

PHPz
PHPzoriginal
2023-05-11 09:20:36561parcourir

Dans le développement PHP, le traitement des données JSON est devenu une tâche courante. Surtout lors de l’interaction avec le front-end ou de la connexion à des API tierces, JSON est souvent le format de données le plus courant.

Lors du processus d'utilisation de PHP pour traiter les données JSON, vous rencontrerez parfois des caractères tronqués lorsque les données JSON sont converties en tableau. Cet article en explorera les raisons et comment y remédier.

1. Pourquoi des codes tronqués apparaissent-ils ?

En PHP, la conversion de données JSON en tableau via la fonction json_decode() est une méthode d'opération courante. Cependant, s'il y a des caractères chinois dans les données JSON, les caractères chinois du tableau converti peuvent être tronqués.

En effet, le jeu de caractères par défaut utilisé par PHP est ISO-8859-1 au lieu d'UTF-8, il ne peut donc pas reconnaître correctement les caractères chinois au format d'encodage UTF-8, ce qui entraîne des caractères tronqués.

2. Solution

1. Utilisez le deuxième paramètre de la fonction json_decode()

En plus de convertir les données JSON en tableau, la fonction json_decode() peut également ajouter un deuxième paramètre pour spécifier un format d'encodage de chaîne JSON.

Par exemple, si les données JSON sont codées en UTF-8, elles peuvent être spécifiées via le code suivant :

$result = json_decode($json, true, JSON_UNESCAPED_UNICODE);

Parmi eux, le troisième paramètre JSON_UNESCAPED_UNICODE indique à PHP de ne pas échapper aux caractères chinois, mais de conserver directement l'UTF d'origine. -8 encodage.

2. Convertir le jeu de caractères ISO-8859-1 en jeu de caractères UTF-8

Une autre solution consiste à convertir le jeu de caractères ISO-8859-1 en jeu de caractères UTF-8. Ceci peut être réalisé en utilisant la fonction iconv() ou la fonction mb_convert_encoding().

Par exemple, en utilisant la fonction iconv() vous pouvez écrire comme ceci :

$result = json_decode(iconv("ISO-8859-1", "UTF-8//IGNORE", $json), true);

Parmi eux, le deuxième paramètre "UTF-8//IGNORE" indique à la fonction iconv() de convertir les caractères codés ISO-8859-1 en Encodage UTF-8 .

3. Ajoutez l'instruction de format d'encodage directement dans le fichier PHP

Ajoutez le code suivant au début du fichier PHP :

header("Content-type:text/html;charset=utf-8");

De cette façon, vous pouvez spécifier le jeu de caractères du fichier PHP comme encodage UTF-8 pour garantir que les caractères chinois peuvent être correctement reconnus.

Résumé :

Si vous rencontrez des problèmes tronqués lors du traitement des données JSON en PHP, pas de panique. Vous pouvez ajouter le deuxième paramètre de la fonction json_decode(), ou convertir l'encodage ISO-8859-1 en encodage UTF-8. , ou dans Ajoutez une déclaration de jeu de caractères au début du fichier PHP pour résoudre le problème.

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!

Déclaration:
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