La fonction PHP json_encode convertit les chaînes UTF-8 en entités hexadécimales : pourquoi et comment le résoudre
La fonction PHP json_encode peut encoder des variables PHP en JSON (JavaScript Object Notation). Cependant, lorsqu'il s'agit de caractères Unicode en codage UTF-8, la fonction peut les convertir par défaut en entités hexadécimales. En effet, JSON ne prend pas en charge nativement les caractères UTF-8, qui sont des caractères multi-octets représentant des caractères non-ASCII.
Pourquoi PHP convertit-il les chaînes UTF-8 en entités hexadécimales ?
La fonction json_encode de PHP utilise la spécification JSON, qui dicte que les caractères Unicode non représentables en caractères ASCII doivent être codés en utilisant séquences d'échappement hexadécimales. Cela garantit la compatibilité avec les applications et les appareils plus anciens qui peuvent ne pas prendre en charge UTF-8.
Résoudre le problème de conversion
Pour résoudre ce problème et éviter la conversion d'UTF-8 chaînes en entités hexadécimales, PHP a introduit l'option JSON_UNESCAPED_UNICODE dans la version 5.4.0. Cette option demande à json_encode d'utiliser des points de code Unicode au lieu de séquences d'échappement hexadécimales pour les caractères non-ASCII.
Exemple
Supposons que vous disposiez du script PHP suivant :
Ce code affichera la chaîne JSON suivante, où les caractères cyrilliques sont codés sous forme d'entités hexadécimales :
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
Pour afficher directement les caractères UTF-8, vous pouvez utiliser l'option JSON_UNESCAPED_UNICODE :
Cela produira la chaîne JSON suivante, où les caractères cyrilliques sont représentés à l'aide de leurs points de code Unicode :
"База данни грешка."
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3