Pourquoi `json_encode()` renvoie-t-il des valeurs nulles pour les propriétés avec des guillemets simples ?

Susan Sarandon
Libérer: 2024-11-02 00:04:29
original
541 Les gens l'ont consulté

Why is `json_encode()` returning null values for properties with single quotes?

Échec de l'encodage JSON : résolution des écarts avec des guillemets simples

Les développeurs rencontrent fréquemment des échecs silencieux lorsqu'ils tentent d'encoder des objets à l'aide de la fonction json_encode() de PHP. Dans ce contexte, un utilisateur a rencontré un problème où l'encodage d'un objet stdClass entraînait des valeurs nulles pour les propriétés contenant des guillemets simples.

Analyse

Après examen du problème, il a été a découvert que la cause sous-jacente était l'incapacité de json_encode() à gérer correctement les caractères en dehors de la plage ASCII. Le caractère guillemet simple, représenté par x92 dans un dump hexadécimal, était particulièrement problématique.

Solution

Pour résoudre le problème, il est essentiel de s'assurer que les données étant encodé est correctement encodé en UTF-8. Ceci peut être réalisé en définissant le codage de la connexion MySQL de manière appropriée, en fonction de l'API utilisée :

  • Ancienne API (obsolète) : mysql_set_charset("utf8")
  • mysqli : mysqli_set_charset("utf8")
  • PDO : Ajoutez le paramètre charset à la chaîne de connexion ou exécutez SET NAMES utf8 si vous utilisez PHP 5.3.6 ou une version antérieure .

Approche alternative

Une solution alternative peut impliquer d'utiliser utf8_decode() pour convertir le texte dans un format correctement encodé. Cependant, cela ne donne pas toujours le résultat souhaité, car cela suppose que le texte est codé en ISO-8859-1.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!