Maison > développement back-end > tutoriel php > 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 ?

Patricia Arquette
Libérer: 2024-11-02 19:32:30
original
529 Les gens l'ont consulté

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 stipule que les caractères Unicode non représentables en caractères ASCII doivent être codés à l'aide de séquences d'échappement hexadécimales. Cela garantit la compatibilité avec les anciennes applications et appareils 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 de 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 :

<code class="php"><?php
$text = "База данни грешка.";
echo json_encode($text);
?></code>
Copier après la connexion

Ce code affichera la chaîne JSON suivante, où les caractères cyrilliques sont codés sous forme d'entités hexadécimales :

<code class="json">"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."</code>
Copier après la connexion

Pour afficher directement les caractères UTF-8, vous pouvez utiliser l'option JSON_UNESCAPED_UNICODE :

<code class="php"><?php
$text = "База данни грешка.";
echo json_encode($text, JSON_UNESCAPED_UNICODE);
?></code>
Copier après la connexion

Cela produira la chaîne JSON suivante, où les caractères cyrilliques sont représentés à l'aide de leurs points de code Unicode :

<code class="json">"База данни грешка."</code>
Copier après la connexion

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 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