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!