"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-12
Parcourir:779

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

L'encodage JSON le problème 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 utilisé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 connexion garantit que les données extraites 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3