Comment décoder et encoder du JSON avec des caractères Unicode en PHP ?

Linda Hamilton
Libérer: 2024-10-31 13:18:30
original
512 Les gens l'ont consulté

How to Decode and Encode JSON with Unicode Characters in PHP?

Décodage et encodage PHP JSON avec des caractères Unicode

Problèmes de décodage de caractères Unicode

Lors de la tentative pour décoder du JSON contenant des caractères Unicode, vous pouvez rencontrer des problèmes si les caractères se situent dans certaines limites. Plus précisément, les caractères tels que "" et "" ne peuvent pas apparaître dans les chaînes JSON. De plus, les caractères de contrôle ne sont pas autorisés.

Encodage et décodage UTF-8

Pour résoudre ce problème, vous pouvez utiliser utf8_encode pour permettre à la chaîne d'être décodée avec json_decode. Cependant, cela peut entraîner la mutilation des personnages. Par exemple, "Odómetro" serait converti en "Odómetro".

Réencodage et échappement des caractères

Lors du réencodage du tableau, le caractère est échappé en ASCII, qui est correct selon la spécification JSON : "Tag"=>"Odu00f3metro". Pour annuler l'échappement du caractère, vous pouvez utiliser l'option JSON_UNESCAPED_UNICODE pour `json_encode. Cependant, cela n'est disponible qu'en PHP 5.4 ou version ultérieure.

Solution alternative utilisant Regex

Si vous êtes limité à PHP 5.3, vous pouvez utiliser une solution basée sur regex solution :

$json = json_encode($array, JSON_UNESCAPED_SLASHES);

// Replace escaped unicode characters with their UTF-8 equivalents
$json = preg_replace('/\\u([0-9a-fA-F]{4})/', '&#x;', $json);
Copier après la connexion

En utilisant le drapeau JSON_UNESCAPED_SLASHES, vous empêchez les barres obliques () d'être échappées dans la chaîne JSON. Le modèle regex correspond ensuite aux caractères Unicode échappés (u####) et les remplace par leurs équivalents UTF-8.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal