Maison  >  Article  >  base de données  >  Comment gérer les caractères UTF-8 lors de l'encodage d'un tableau PHP en JSON ?

Comment gérer les caractères UTF-8 lors de l'encodage d'un tableau PHP en JSON ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 13:50:54897parcourir

How to Handle UTF-8 Characters When Encoding a PHP Array to JSON?

Batailles d'encodage JSON avec des caractères UTF-8 en PHP

Dans le domaine de la gestion des bases de données en PHP, on peut rencontrer des défis lorsque l'on travaille avec caractères accentués et encodage UTF-8. Considérons le scénario dans lequel vous souhaitez récupérer des lignes d'un tableau contenant des caractères accentués et où le codage des colonnes est configuré comme latin1_swedish_ci.

Comprendre le problème

Tentatives d'affichage les lignes récupérées à l'aide de utf8_encode() semblent initialement fonctionner, mais le codage JSON ultérieur à l'aide de json_encode() entraîne des valeurs nulles pour les champs concernés. Cela se produit car json_encode() peut ne pas gérer les caractères UTF-8 codés à l'aide de mysql_fetch_assoc().

Une solution pour préserver UTF-8

Pour résoudre ce problème, utilisez l'approche suivante :

  1. Créez un tableau vide nommé $rows pour stocker les résultats encodés.
  2. Parcourez l'ensemble de résultats de la base de données en utilisant while($row = mysql_fetch_assoc($result)) .
  3. Pour chaque ligne, appliquez utf8_encode() à chaque élément en utilisant $rows[] = array_map('utf8_encode', $row). Cette étape convertit correctement les caractères accentués en UTF-8.
  4. Enfin, encodez le tableau $rows en JSON à l'aide de echo json_encode($rows).

En implémentant cette méthode, le JSON l'encodage représentera correctement les caractères UTF-8, en préservant les caractères accentués et en empêchant les valeurs nulles pour les champs concernés.

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