Maison  >  Article  >  développement back-end  >  Que dois-je faire si les caractères chinois ne s'affichent pas lors de la lecture de fichiers csv en PHP ?

Que dois-je faire si les caractères chinois ne s'affichent pas lors de la lecture de fichiers csv en PHP ?

PHPz
PHPzoriginal
2023-04-21 10:01:131179parcourir

Introduction :

Le fichier CSV est un format de fichier texte couramment utilisé et les données qu'il contient peuvent être facilement lues et traitées par des programmes. En tant que puissant langage de programmation back-end, le langage PHP fournit également une série de fonctions et d'outils pour le traitement des fichiers CSV. Cependant, lorsqu'il y a des caractères chinois dans le fichier CSV, certains développeurs rencontreront le problème que les caractères chinois ne s'affichent pas lors de l'utilisation de PHP pour lire le fichier CSV. Cet article présentera en détail les raisons et les solutions pour lesquelles les caractères chinois ne s'affichent pas lors de la lecture de fichiers CSV.

1. Description du problème

Lorsque certains développeurs utilisent PHP pour lire des fichiers CSV, ils constateront que les caractères chinois qu'ils contiennent ne peuvent pas être affichés normalement et que des caractères tronqués ou méconnaissables apparaissent. À l'heure actuelle, les développeurs pensent souvent qu'il s'agit d'un problème avec PHP lisant le fichier CSV, mais en fait, ce problème est causé par l'encodage des caractères du fichier CSV et la méthode de lecture du fichier CSV.

2. Codage des caractères chinois

Avant de résoudre le problème, nous devons connaître quelques connaissances sur le codage des caractères. Le codage de caractères fait référence à une méthode de conversion de caractères en données binaires pouvant être reconnues par les ordinateurs. Dans les fichiers CSV, le codage des caractères utilise généralement des codages tels que ASCII, UTF-8 et GB2312. Parmi eux, le codage ASCII est un codage binaire sur 7 bits qui ne peut représenter que des lettres et des symboles anglais de base, tandis que UTF-8 est une méthode de codage mondialement acceptée qui peut représenter presque tous les caractères, y compris les caractères chinois. GB2312 est une méthode de codage conçue pour les caractères chinois et utilisée pour représenter des caractères chinois simplifiés.

Lors de la lecture de fichiers CSV, l'utilisation de différentes méthodes d'encodage peut entraîner un mauvais affichage des caractères chinois. Par conséquent, nous devons spécifier correctement le codage des caractères du fichier CSV et utiliser le même codage pour lire le fichier CSV.

3. Solution

Avec la base de connaissances ci-dessus, nous pouvons résoudre le problème des caractères chinois qui ne s'affichent pas. Ci-dessous, trois solutions courantes seront présentées.

  1. Spécifiez l'encodage des caractères du fichier CSV

En PHP, nous pouvons utiliser les fonctions fopen et fgetcsv pour lire les fichiers CSV. Parmi elles, la fonction fopen est utilisée pour ouvrir le fichier CSV et la fonction fgetcsv est utilisée pour lire les données CSV ligne par ligne. Lors de l'ouverture d'un fichier CSV avec fopen, vous pouvez utiliser le mode "r" pour la lecture.

$f = fopen('data.csv', 'r');

Ici, "data.csv" est le nom du fichier CSV à lire. De plus, nous pouvons également utiliser la fonction mb_convert_encoding pour convertir l'encodage du fichier CSV vers la méthode d'encodage spécifiée afin de garantir que les caractères chinois du fichier CSV peuvent être affichés normalement.

$csv_arr = array();
while($data = fgetcsv($f)) {
for($i=0; $i< count($data); $i++) {

$csv_arr[] = mb_convert_encoding($data[$i], "UTF-8", "GB2312");

}
}

Ici, nous convertissons l'encodage du fichier CSV en UTF-8 afin que le programme puisse lire correctement les caractères chinois.

  1. Utilisez la fonction iconv pour convertir les encodages de caractères

En plus de la fonction mb_convert_encoding, nous pouvons également utiliser la fonction iconv prise en charge par PHP pour convertir les encodages de caractères. La fonction iconv peut convertir les caractères entre différentes méthodes de codage pour garantir que les caractères chinois dans les fichiers CSV peuvent être affichés normalement. Voici un exemple :

$file = "data.csv";
if (file_exists($file)) {
$fileContent = file_get_contents($file);
$fileContent = iconv("GB2312", "UTF-8 //IGNORE", $fileContent);
$csv_arr = str_getcsv($fileContent, "n");
foreach($csv_arr as &$row) {

$row = str_getcsv($row, ",");
array_walk($row, function(&$cell) {
  $cell = mb_convert_encoding($cell, "UTF-8", "GB2312");
});

}
}

Ici, nous utilisons d'abord la fonction file_get_contents pour lire Prenez le contenu du fichier CSV et utilisez la fonction iconv pour convertir l'encodage de GB2312 en UTF-8. Ensuite, utilisez la fonction str_getcsv pour convertir le contenu du fichier en un tableau bidimensionnel afin de lire les données ligne par ligne. Enfin, nous utilisons la fonction array_walk pour convertir chaque élément (c'est-à-dire cellule) du tableau bidimensionnel en codage UTF-8.

  1. Utiliser les classes d'outils de lecture CSV

Enfin, nous pouvons également utiliser certaines classes d'outils de lecture CSV pour lire les fichiers CSV. Ces classes d'utilitaires fournissent généralement des interfaces pratiques capables de gérer de manière flexible diverses situations, notamment les problèmes de codage de caractères. Voici un exemple :

require_once 'CsvReader.php';

$csvReader = new CsvReader('data.csv', 'r', 'GB2312');

while($row = $csvReader->getRow ()) {
var_dump($row);
}

Ici, nous introduisons une classe d'outils nommée "CsvReader.php" pour lire les fichiers CSV en créant un objet CsvReader. Nous pouvons spécifier le chemin, le mode de lecture et la méthode d'encodage du fichier CSV lors du processus de création d'un objet CsvReader. De cette façon, lors de la lecture de fichiers CSV, le problème de non-affichage des caractères chinois est résolu.

4. Conclusion

C'est un problème courant que les caractères chinois ne s'affichent pas dans les fichiers CSV. Lorsque nous utilisons PHP pour lire des fichiers CSV, nous devons avoir une compréhension de base du codage des caractères et utiliser les méthodes et outils appropriés pour le résoudre. .Cette question. Cet article présente trois solutions : spécifier le codage de caractères du fichier CSV, utiliser la fonction iconv pour convertir le codage de caractères et utiliser la classe d'outil de lecture CSV pour lire le fichier CSV. J'espère que cela pourra aider les lecteurs dans le besoin.

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