Maison > développement back-end > Problème PHP > Comment exporter des fichiers CSV avec PHP et définir l'encodage

Comment exporter des fichiers CSV avec PHP et définir l'encodage

藏色散人
Libérer: 2023-03-12 16:24:01
original
1983 Les gens l'ont consulté

Comment définir l'encodage lors de l'exportation csv avec PHP : 1. Utilisez la méthode iconv pour transcoder le contenu exporté de utf-8 en gb2312 ; 2. Utilisez la méthode mb_convert_encoding pour convertir l'encodage.

Comment exporter des fichiers CSV avec PHP et définir l'encodage

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3

Comment exporter l'encodage des paramètres csv avec php ? Exporter du code csv tronqué sous PHP ?

Nous utilisions PHPexcel pour exporter certaines de nos données. Étant donné que Phpexcel provoquait un délai d'attente et une explosion de mémoire lors de l'exportation de plus de 10 000 éléments de données, nous sommes ensuite passés à l'exportation de données au format CSV.

Je pense que de nombreux amis ont rencontré divers problèmes tronqués lors de l'exportation de fichiers CSV à l'aide de PHP. J'ai beaucoup cherché sur Internet et j'ai trouvé des solutions en ajoutant BOM. J'ai essayé cette méthode plusieurs fois mais cela n'a pas fonctionné dans nos environnements de test et de production, je ne sais pas pourquoi.

Plus tard, nous avons utilisé la méthode iconv pour transcoder le contenu exporté de utf-8 vers gb2312. Le miracle s'est finalement produit et il a pu être affiché normalement. Cependant, un collègue a découvert qu'il manquait des dizaines de données parmi les autres. plus de 400 éléments de données que nous avons exportés (je les ai transcodés un par un, puis je les ai fusionnés en une chaîne CSV). Je suis donc allé à Du Niang pour trouver le problème de l'échec du transcodage d'iconv, et j'ai découvert qu'iconv s'est avéré avoir un bug. Certains caractères chinois ne pouvaient pas être convertis, ils ne pouvaient pas être ignorés et renvoyaient une valeur nulle. valeur. C'est la raison pour laquelle des dizaines de données manquaient et fournit également la méthode d'utilisation de mb_convert_encoding pour convertir. J'ai donc fait une légère modification et je l'ai changé pour utiliser la méthode mb_convert_encoding. Le test sur la machine locale était tout à fait normal. Le code est le suivant :

$str = mb_convert_encoding($str,'gb2312');
Copier après la connexion

Mais lorsque les données sont exportées en ligne, c'est toujours un tas de caractères tronqués. , mais ce n'est pas la même chose que les caractères tronqués avant sans transcodage, indiquant que la méthode mb_convert_encoding fonctionne. J'ai vérifié que la méthode mb_convert_encoding avait trois paramètres $from_encoding. Le troisième paramètre est un paramètre facultatif. La plupart des exemples sur Internet n'utilisent pas le troisième paramètre. Je l'ai donc changé en

$str = mb_convert_encoding($str,'gb2312','utf-8');
Copier après la connexion

et je l'ai testé sur la machine de développement locale. Quand je l'ai publié dans l'environnement de production, hahaha, tout était normal.

Pourquoi ? Je n'ai vraiment pas le temps de m'y plonger. Si quelqu'un le sait, dites-le-moi s'il vous plaît

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal