Maison >développement back-end >tutoriel php >Comment encoder des caractères non-ASCII en JSON avec UTF-8 à l'aide de « json_encode » de PHP ?

Comment encoder des caractères non-ASCII en JSON avec UTF-8 à l'aide de « json_encode » de PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 00:15:02260parcourir

How to Encode Non-ASCII Characters in JSON with UTF-8 Using PHP's `json_encode`?

Comment renvoyer PHP json_encode avec un encodage UTF-8 au lieu d'Unicode

Lors de l'utilisation de la fonction json_encode de PHP, par défaut, les caractères non-ASCII sont codés au format Unicode. Cela se traduit par une réponse JSON avec des séquences d'échappement telles que "u00e1" au lieu de caractères codés en UTF-8 comme "á".

Prenons cet exemple :

<code class="php">$arr = array('a' => 'á');
echo json_encode($arr);</code>

Le résultat serait :

<code class="json">{"a":"\u00e1"}</code>

Pour résoudre ce problème et renvoyer la réponse JSON avec des caractères codés en UTF-8, vous pouvez utiliser les approches suivantes :

PHP 5.4 :

À partir de PHP 5.4, json_encode fournit l'option JSON_UNESCAPED_UNICODE. En définissant cette option, les caractères non-ASCII seront codés en UTF-8 sans séquences d'échappement.

<code class="php">echo json_encode($arr, JSON_UNESCAPED_UNICODE);</code>

Anciennes versions de PHP :

Pour les versions antérieures à PHP 5.4, ​​vous pouvez implémenter votre propre encodeur JSON qui omet de coder les caractères non-ASCII. Alternativement, vous pouvez utiliser l'encodeur JSON de Pear et supprimer les lignes 349 à 433 de la fonction d'encodage.

Veuillez noter que la différence entre {"a": "u00e1"} et {"a": "á"} c'est simplement la façon dont ils sont écrits dans la syntaxe JSON. Les deux représentations seront décodées dans la même valeur Unicode par les décodeurs JSON.

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