"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi la fonction json_encode de PHP convertit-elle les chaînes UTF-8 en entités hexadécimales ?

Pourquoi la fonction json_encode de PHP convertit-elle les chaînes UTF-8 en entités hexadécimales ?

Publié le 2024-11-11
Parcourir:712

Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

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 :

"База данни грешка."
Dernier tutoriel Plus>

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