Position actuelle: Accueil> Derniers articles> Lors de l'enregistrement des fichiers CSV à l'aide de fputcsv, comment contrôler le format d'encodage de fichiers pour éviter le code brouillé?

Lors de l'enregistrement des fichiers CSV à l'aide de fputcsv, comment contrôler le format d'encodage de fichiers pour éviter le code brouillé?

M66 2025-06-22

1. Introduction à la fonction fputcsv

La fonction FputCSV dans PHP est utilisée pour écrire un tableau de données dans un fichier CSV. Il s'agit d'une fonction commune pour traiter la génération et l'écriture du fichier CSV. La syntaxe de base de fputcsv est la suivante:

 fputcsv($file, $fields, $delimiter = ',', $enclosure = '"', $escape_char = '\\');

Lorsque, le fichier de paramètre $ est la poignée du fichier, $ fields est le tableau à écrire, $ délimiter est le délimiteur, la valeur par défaut est une virgule, $ Enceinte est le caractère entourant le champ, la valeur par défaut est Double Quote et $ East_Char est le caractère d'évasion.

2. Problèmes brouillés courants

Lorsque nous ouvrons des fichiers CSV dans plusieurs systèmes d'exploitation tels que Windows et Linux, nous pouvons rencontrer des problèmes brouillés. Cela est dû aux codages de caractères par défaut incohérents utilisés par différents systèmes d'exploitation et applications. Par exemple, Windows utilise le codage GBK ou Windows-1252 par défaut, tandis que Linux et MacOS sont plus couramment utilisés dans le codage UTF-8.

3. Stratégie pour contrôler le format d'encodage

3.1 Convertir le codage à l'aide de mb_convert_encoding

Pour nous assurer que le fichier peut être affiché correctement dans différents environnements, nous pouvons utiliser la fonction MB_CONVERT_ENCODING pour convertir le codage des données en un format de codage unifié avant d'écrire des données à l'aide de fputcsv . Il est généralement recommandé d'utiliser le codage UTF-8.

 // Supposons que les données sont chinoises
$data = ['Nom', 'âge', 'Ville'];
$data = array_map(function($value) {
    return mb_convert_encoding($value, 'UTF-8', 'auto'); // Identifier et convertir automatiquement UTF-8
}, $data);

$file = fopen('output.csv', 'w');
fputcsv($file, $data);
fclose($file);

Cette méthode garantit que le contenu de chaque colonne du fichier CSV est codé dans UTF-8, évitant ainsi le problème brouillé.

3.2 Réglage de l'en-tête Bom pour prendre en charge le codage UTF-8

Les fichiers codés UTF-8 sont parfois reconnus par erreur comme ANSI codés par certains programmes tels que Excel. Pour résoudre ce problème, vous pouvez ajouter le bom de UTF-8 (marqueur de commande d'octets) au début du fichier. Cela garantit que le fichier s'affiche correctement dans Excel.

 $file = fopen('output.csv', 'w');

// Ajouter à BOM tête
fwrite($file, "\xEF\xBB\xBF");

$data = ['Nom', 'âge', 'Ville'];
fputcsv($file, $data);

fclose($file);

3.3 Modifier le codage par défaut d'Excel

Dans certains cas, nous pouvons définir directement la méthode d'encodage lorsque Excel ouvre un fichier CSV. Bien que cette méthode ne s'applique pas nécessairement à tous les scénarios, c'est une alternative à la résolution du problème du code brouillé. Cela peut être fait en spécifiant le format de codage dans l'URL du fichier CSV:

 $fileUrl = 'http://m66.net/downloads/csv/output.csv';

Bien sûr, cette méthode convient au moment où un fichier est téléchargé directement sous la forme d'une URL, et l'utilisateur spécifie la méthode d'encodage pendant le processus de téléchargement.

3.4 Forcer la sortie à un format de codage spécifique

Parfois, nous devons exporter le fichier CSV vers un format de codage spécifié (tel que GBK). Les données de chaque ligne peuvent être converties en format de codage cible via MB_CONVERT_ENCODING avant l'écriture.

 $data = ['Nom', 'âge', 'Ville'];
$data = array_map(function($value) {
    return mb_convert_encoding($value, 'GBK', 'UTF-8'); // Volonté UTF-8 Se tourner vers GBK
}, $data);

$file = fopen('output.csv', 'w');
fputcsv($file, $data);
fclose($file);

Cette méthode convient à une utilisation dans les systèmes Windows en Chine et empêche le code brouillé causé par Excel en utilisant le codage GBK par défaut.

4. Résumé

Rencontrer des problèmes de codage est un défi courant lors de l'utilisation de la fonction FputCSV de PHP. En contrôlant le format d'encodage du fichier, en s'assurant que le fichier s'affiche correctement dans différents systèmes et applications, et en évitant le code brouillé, vous pouvez utiliser les méthodes suivantes:

  • Utilisez MB_CONVERT_ENCODING pour convertir les données en format de codage unifié.

  • Ajoutez un en-tête UTF-8 BOM pour vous assurer que Excel reconnaît correctement le codage UTF-8.

  • Sélectionnez différents encodages de caractères, tels que GBK, selon vos besoins, pour vous adapter à différents systèmes d'exploitation.

  • Spécifiez directement les méthodes d'encodage (par exemple, m66.net ) dans l'URL pour éviter les problèmes de compatibilité partielle.

Grâce à ces techniques, vous pouvez éviter les problèmes de code brouillé lors de l'exportation de fichiers CSV et améliorer l'expérience utilisateur.