Maison >base de données >tutoriel mysql >Pourquoi json_encode() perd-il parfois des caractères UTF-8 lors de l'encodage des lignes de base de données en PHP ?

Pourquoi json_encode() perd-il parfois des caractères UTF-8 lors de l'encodage des lignes de base de données en PHP ?

DDD
DDDoriginal
2024-10-30 20:56:30660parcourir

Why Does json_encode() Sometimes Lose UTF-8 Characters When Encoding Database Rows in PHP?

Problèmes d'encodage de caractères UTF-8 avec json_encode()

En PHP, la gestion de l'encodage de caractères UTF-8 peut être difficile, surtout lorsque l'on travaille avec bases de données et encodage JSON. Un problème courant survient lorsque vous essayez d'encoder en JSON un tableau contenant des lignes de base de données comportant des caractères accentués. Malgré la documentation affirmant que json_encode() prend en charge UTF-8, certains caractères peuvent être perdus ou apparaître comme des valeurs nulles pendant le processus d'encodage.

Pour résoudre ce problème, une autre approche est nécessaire. Au lieu de coder directement le tableau de lignes, créez un tableau vide et remplissez-le avec des valeurs codées ligne par ligne. Voici un exemple :

<code class="php">// Create an empty array for the encoded resultset
$rows = array();

// Loop over the db resultset and put encoded values into $rows
while($row = mysql_fetch_assoc($result)) {
  $rows[] = array_map('utf8_encode', $row);
}

// Output $rows
echo json_encode($rows);</code>

Dans ce code mis à jour :

  1. Un tableau vide ($rows) est initialisé pour contenir l'ensemble de résultats encodé.
  2. Le les lignes sont itérées et chaque ligne est transmise via array_map() pour encoder ses valeurs individuelles.
  3. Les valeurs codées sont stockées dans le tableau $rows.
  4. Enfin, le tableau $rows encodé est Encodé et généré en JSON.

Cette approche garantit que tous les caractères UTF-8 sont correctement encodés avant l'encodage JSON final, résolvant ainsi le problème de la perte de certains caractères ou de leur apparition comme null dans le code d'origine. .

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