L'encodage JSON échoue avec des guillemets simples : un mystère PHP
Lorsque vous utilisez la fonction json_encode de PHP pour convertir un objet stdClass en JSON, vous pouvez rencontrer un échec déroutant entraînant une perte de valeur des propriétés. Explorons ce problème et découvrons une solution.
L'exemple donné démontre le comportement :
<code class="php">$post = new stdClass(); $post->post_title = "Alumnus' Dinner Coming Soon"; // note the single quote $json = json_encode($post); echo $json; // outputs {"ID":"12981","post_title":null,"post_parent":"0","post_date":"2012-01-31 12:00:51"}</code>
Le JSON résultant n'a pas la propriété "post_title" en raison d'un problème de formatage avec le guillemet simple. La spécification JSON stipule que les guillemets simples ne sont pas autorisés dans les clés ou valeurs de propriété, auxquelles json_encode adhère strictement.
Pour résoudre ce problème, suivez ces étapes :
1. Assurez-vous de l'encodage UTF-8 :
Les connexions à la base de données doivent spécifier l'encodage UTF-8 pour récupérer correctement les données. En fonction de votre méthode de connexion :
2. Décoder les guillemets simples :
Si vous rencontrez un problème d'encodage de caractères, envisagez de décoder explicitement les guillemets simples. Supposons que votre base de données renvoie "Ancien élève ? Dîner à venir" pour "post_title" :
<code class="php">$post->post_title = str_replace("\x92", "'", $post->post_title);</code>
Cela convertit le caractère erroné en guillemet simple valide, garantissant ainsi un encodage JSON correct.
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!