Maison >développement back-end >tutoriel php >Pourquoi les caractères Unicode spéciaux semblent-ils déformés après l'encodage 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!