Maison  >  Article  >  développement back-end  >  Pourquoi `json_encode` convertit-il UTF-8 en entités hexadécimales en PHP ?

Pourquoi `json_encode` convertit-il UTF-8 en entités hexadécimales en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 11:15:09471parcourir

Why Does `json_encode` Convert UTF-8 to Hexadecimal Entities in PHP?

Conversion d'entités UTF-8 en hexadécimal dans json_encode de PHP : plongée dans le comportement et les solutions

Dans les applications PHP qui gèrent des données multilingues, le La fonction json_encode pose souvent un défi déroutant. Lorsque des caractères Unicode sont rencontrés, ils sont automatiquement convertis en entités hexadécimales, perturbant la sortie Unicode souhaitée.

Explication :

Ce comportement découle du mécanisme d'encodage par défaut de json_encode . Il utilise JSON, qui s'attend à ce que les caractères Unicode soient représentés sous forme d'entités hexadécimales pour garantir la compatibilité entre différents systèmes et navigateurs. Cependant, cette conversion peut être indésirable lorsqu'il s'agit de scénarios spécifiques.

Solution :

Pour contrer ce comportement, une solution réside dans une option nouvellement introduite dans PHP 5.4. 0, JSON_UNESCAPED_UNICODE. Cette option demande à json_encode de laisser les caractères Unicode intacts sans les convertir en entités hexadécimales. En utilisant cette option, les caractères UTF-8 attendus peuvent être conservés :

json_encode($text, JSON_UNESCAPED_UNICODE);

Cette approche permet les entrées et sorties suivantes :

INPUT
echo $text;

OUTPUT
База данни грешка.
INPUT
json_encode($text, JSON_UNESCAPED_UNICODE);

OUTPUT
База данни грешка.

Avec cette technique, le Les complexités de la conversion Unicode dans la fonction json_encode de PHP peuvent être résolues efficacement, garantissant la préservation de la sortie Unicode souhaitée.

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