Maison >développement back-end >tutoriel php >Pourquoi certains caractères Unicode dans JSON sont-ils codés sous forme de séquences d'échappement ?
Décodage de caractères Unicode spéciaux étranges JSON : une explication
Dans le domaine de l'encodage JSON, les caractères Unicode "spéciaux" peuvent parfois apparaître étrangement codés . Cet article vise à clarifier ce problème courant et à explorer les raisons sous-jacentes.
Pourquoi ce phénomène se produit-il ?
La norme JSON permet de coder les caractères spéciaux de plusieurs manières, y compris des séquences d'échappement hexadécimales. . Lors de l'utilisation de json_encode pour encoder des caractères Unicode, il opte souvent pour ces séquences d'échappement. Par exemple, le caractère chinois « 馬 » apparaîtra comme « u99ac » dans le JSON codé.
Ce comportement n'est pas une erreur ; il suit plutôt la syntaxe JSON décrite dans la norme ECMAScript. En Javascript, les chaînes littérales peuvent être écrites à l'aide de séquences d'échappement hexadécimales pour représenter n'importe quel caractère, y compris ceux de la paire de substitution UTF-16.
À l'aide du point de code Unicode, n'importe quel caractère peut être codé comme "u... ". Cette notation est complètement équivalente au caractère littéral lui-même, car les deux seront interprétés comme la même entité par un analyseur JSON.
Cependant, on peut configurer json_encode pour préférer le codage de caractères littéraux en définissant l'indicateur JSON_UNESCAPED_UNICODE lors du codage. Cela rendra le résultat plus lisible par l'homme mais ne modifiera pas la signification sous-jacente des données.
En conclusion, l'encodage apparemment "étrange" des caractères Unicode en JSON à l'aide de json_encode n'est pas une question d'encodages incorrects. C'est une méthode parfaitement valide et conforme aux standards JSON. Si vous le souhaitez, le codage des caractères littéraux peut être activé à l'aide de l'indicateur JSON_UNESCAPED_UNICODE.
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!