Maison  >  Article  >  développement back-end  >  Pourquoi `json_encode()` échoue-t-il lors de l'encodage de guillemets simples en PHP avec l'encodage Windows-1252 ?

Pourquoi `json_encode()` échoue-t-il lors de l'encodage de guillemets simples en PHP avec l'encodage Windows-1252 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 08:15:31527parcourir

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

Échec de json_encode de PHP avec des guillemets simples

Dans un scénario impliquant un objet PHP stdClass ($post), la fonction json_encode() de manière inattendue, ne parvient pas à encoder la propriété post_title, ce qui entraîne une valeur nulle dans la sortie JSON. Malgré l'encodage UTF-8 apparent de la base de données, il semble que le processus de récupération des données ne soit pas correctement configuré.

Cause : Encodage incorrect

Le JSON le problème d'encodage provient d'un encodage incorrect du caractère guillemet simple dans post_title. Plus précisément, le caractère est codé en Windows-1252, ce qui donne une valeur hexadécimale de 92, ce qui n'est pas un caractère UTF-8 valide.

Solution : définir le codage de connexion à la base de données

Pour résoudre ce problème, il est nécessaire de définir l'encodage de connexion à la base de données sur UTF-8. La méthode utilisée dépend de l'API employée :

  • MySQL : mysql_set_charset("utf8")
  • MySQLi : mysqli_set_charset("utf8")
  • PDO (PHP > ;= 5.3.6) : paramètre charset dans la chaîne de connexion
  • PDO (versions antérieures) : SET NAMES utf8

Considérations supplémentaires

Il est important de noter que la définition de l'encodage de la connexion garantit que les données récupérées de la base de données sont correctement encodées en UTF-8. Cependant, si les données sont stockées dans un codage incorrect, tel que Windows-1252, une conversion manuelle via utf8_encode() ou d'autres moyens peut être nécessaire.

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!

Déclaration:
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