Maison >développement back-end >tutoriel php >Pourquoi les caractères Unicode spéciaux semblent-ils déformés après l'encodage JSON ?

Pourquoi les caractères Unicode spéciaux semblent-ils déformés après l'encodage JSON ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 18:03:17880parcourir

Why Do Special Unicode Characters Appear Distorted After JSON Encoding?

Interprétation des caractères Unicode « spéciaux » codés en JSON

Lors de l'incorporation de caractères Unicode « spéciaux », ils apparaissent souvent déformés après avoir été encodés en JSON :

echo json_encode(['foo' => '馬']);
// Output: {"foo":"\u99ac"}

Comprendre pourquoi cela se produit est crucial.

Encodage JSON Le codage JSON standard

exploite la formation littérale de chaîne ECMAScript (anciennement connue sous le nom de JavaScript) (Section 7.8.4). Il permet de représenter les caractères sous forme de nombres hexadécimaux préfixés par "u", suivis de quatre chiffres hexadécimaux représentant le point de code :

"\u99ac"

Cette représentation, identique à la chaîne littérale "馬", véhicule le même Unicode caractère lorsqu'il est analysé par un analyseur JSON conforme.

Encodage JSON de PHP Préférence

La fonction json_encode de PHP encode souvent les caractères non-ASCII à l'aide de séquences d'échappement "u....". Bien que cela soit facultatif, cela produit un JSON valide.

Personnalisation de l'encodage

Si vous le souhaitez, l'indicateur JSON_UNESCAPED_UNICODE, introduit dans PHP 5.4, permet l'encodage des caractères littéraux :

echo json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE);
// Output: {"foo":"馬"}

Il est important de noter que cette personnalisation est une préférence plutôt qu'une nécessité pour la transmission Caractères Unicode en 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