Maison > Article > base de données > Pourquoi json_encode() perd-il parfois des caractères UTF-8 lors de l'encodage des lignes de base de données en 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 :
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!