J'ai rencontré un comportement intéressant dans l'implémentation native de PHP 5 de json_encode()
. Apparemment, lors de la sérialisation d'un objet dans une chaîne json, le codeur annulera toutes les propriétés qui sont des chaînes contenant des guillemets "bouclés", le type qui pourrait potentiellement être copié-collé à partir de documents MS Word avec la conversion automatique activée.JSON Encode et guillemets
Est-ce un comportement normal de la part de la fonction? Que puis-je faire pour forcer ces types de personnages à se convertir en leurs équivalents de base? J'ai vérifié l'incompatibilité de l'encodage de caractères entre la base de données retournant les données et la page d'administration l'insère et tout est configuré correctement - il semble vraiment que l'encodeur refuse ces valeurs à cause de ces caractères. Est-ce que quelqu'un d'autre a rencontré ce comportement?
EDIT:
Pour clarifier; MSWord utilisera des guillemets et des apostraphes standard et les convertira en guillemets "fantaisie" ou "bouclés" plus esthétiques. Ces caractères peuvent causer des problèmes lorsqu'ils sont placés dans des gestionnaires de contenu qui ont des erreurs de charset entre leur interface d'édition (dans le HTML) et l'encodage de la base de données.
Ce n'est pas le problème ici, cependant. Par exemple, j'ai un json_object représentant le profil d'une personne et la chaîne:
Jim O’Shea
Le code UTF pour que apostraphe étant \u2019
sortira nulle dans l'objet JSON lorsque extraites de la base de données et directement json_encoded.
{"model_name":"Bio","logged":true,"BioID":"17","Name":null,"Body":"Profile stuff!","Image":"","Timestamp":"2011-09-23 11:15:24","CategoryID":"1"}
Pouvez-vous montrer un exemple concret? –
Je ne suis pas sûr de ce que vous entendez par "annuler les propriétés qui sont des chaînes contenant des accolades". Cependant, j'ai testé 'json_decode()' la chaîne ''{" {a} ":" {b, c, d} "}'' et cela a fonctionné comme prévu. –
@Jack bouclés ** devis, ** pas d'accolades. –