Comment gérez-vous les caractères Unicode en PHP lors du décodage et de l'encodage des données JSON ?

Barbara Streisand
Libérer: 2024-11-03 13:26:02
original
589 Les gens l'ont consulté

How do you handle Unicode characters in PHP when decoding and encoding JSON data?

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

Lorsque vous travaillez avec des données JSON contenant des caractères Unicode, il est essentiel de préserver l'intégrité des caractères lors du décodage et encodage. En PHP, la gestion des caractères Unicode peut présenter plusieurs défis.

Décoder JSON avec des caractères Unicode

Par défaut, la fonction json_decode() de PHP s'attend à ce que les chaînes JSON soient UTF-8 codé. Si les caractères Unicode ne sont pas codés en UTF-8, ils ne seront pas décodés correctement. Pour résoudre ce problème, utilisez utf8_decode() avant de décoder la chaîne JSON :

<code class="php">$json = '{"Tag":"Odómetro"}';
$decoded = json_decode(utf8_decode($json));</code>
Copier après la connexion

Encodage du JSON avec des caractères Unicode

Après avoir modifié les données JSON, il est nécessaire d'encoder à nouveau dans une chaîne JSON. Par défaut, json_encode() échappe aux caractères Unicode pour se conformer aux normes JSON. Pour éviter d'échapper des caractères Unicode, utilisez l'indicateur JSON_UNESCAPED_UNICODE :

<code class="php">$encoded = json_encode($decoded, JSON_UNESCAPED_UNICODE);</code>
Copier après la connexion

Récupération des caractères Unicode codés

Si vous devez annuler l'échappement des caractères Unicode codés, vous pouvez utiliser le html_entity_decode () fonction :

<code class="php">$unescaped = html_entity_decode($encoded);</code>
Copier après la connexion

Versions PHP

Notez que l'indicateur JSON_UNESCAPED_UNICODE n'est disponible que dans la version PHP 5.4 et ultérieure. Pour les versions antérieures, vous pouvez utiliser une expression régulière pour rechercher et annuler l'échappement des caractères Unicode :

<code class="php">$regex = '/\\u([0-9a-fA-F]{4})/';
$unescaped = preg_replace($regex, '&#x\1;', $encoded);</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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!