IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Convertir fichier csv en utf-8


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut Convertir fichier csv en utf-8
    Bonjour, j'ai besoin de convertir mon fichier csv en utf-8 avant de l'insert en base,

    Comment m'y prendre ?
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
     <?php
             //ini_set('display_errors','off'); 
     
    		extract(filter_input_array(INPUT_POST));
    		$fichier=$_FILES["fichierCsv"]["name"];
    		$utf8 = file_put_contents($fichier,utf8_encode(file_get_contents($fichier)));
     
    			if($fichier){
    				$fp = fopen ($_FILES["fichierCsv"]["tmp_name"], "r");
    			}
    			else{  //FICHIER INCONNU ?> 
    				<p align="center"> - Importation Echouee -</p>
    				<p align="center">Chemin non valide...</p>
    			<?php exit();}
    				$cpt=0;?>
    				<p align="center"> - Importation Réussie -</p>
     
    				<?php  // IMPORTATION
    				while(!feof($fp)){
     
    					$ligne = fgets($fp,4096);
    					$liste = explode(";",$ligne);
    					$table = filter_input(INPUT_POST, 'userfile');
     
    					$liste[0] = (isset($liste[0])) ? $liste[0] : Null;
    					$liste[1] = (isset($liste[1])) ? $liste[1] : Null;
    					$liste[2] = (isset($liste[2])) ? $liste[2] : Null;
    					$liste[3] = (isset($liste[3])) ? $liste[3] : Null;
    					$liste[4] = (isset($liste[4])) ? $liste[4] : Null;
    					$liste[5] = (isset($liste[5])) ? $liste[5] : Null;
    					$liste[6] = (isset($liste[6])) ? $liste[6] : Null;
    					$liste[7] = (isset($liste[7])) ? $liste[7] : Null;
    					$liste[8] = (isset($liste[8])) ? $liste[8] : Null;
    					$liste[9] = (isset($liste[9])) ? $liste[9] : Null;
    					$liste[10] = (isset($liste[10])) ? $liste[10] : Null;
    					$liste[11] = (isset($liste[11])) ? $liste[11] : Null;
    					$liste[12] = (isset($liste[12])) ? $liste[12] : Null;
    					$liste[13] = (isset($liste[13])) ? $liste[13] : Null;
    					$liste[14] = (isset($liste[14])) ? $liste[14] : Null;
    					$liste[15] = (isset($liste[15])) ? $liste[15] : Null;
    					$liste[16] = (isset($liste[16])) ? $liste[16] : Null;
    					$liste[17] = (isset($liste[17])) ? $liste[17] : Null;
    					$liste[18] = (isset($liste[18])) ? $liste[18] : Null;
    					$liste[19] = (isset($liste[19])) ? $liste[19] : Null;
    					$liste[20] = (isset($liste[20])) ? $liste[20] : Null;
    					$liste[21] = (isset($liste[21])) ? $liste[21] : Null;
    					$liste[22] = (isset($liste[22])) ? $liste[22] : Null;
    					$liste[23] = (isset($liste[23])) ? $liste[23] : Null;
    					$liste[24] = (isset($liste[24])) ? $liste[24] : Null;
    					$liste[25] = (isset($liste[25])) ? $liste[25] : Null;
    					$liste[26] = (isset($liste[26])) ? $liste[26] : Null;
    					$liste[27] = (isset($liste[27])) ? $liste[27] : Null;
    					$liste[28] = (isset($liste[28])) ? $liste[28] : Null;
    					$liste[29] = (isset($liste[29])) ? $liste[29] : Null;
    					$liste[30] = (isset($liste[30])) ? $liste[30] : Null;
    					$liste[31] = (isset($liste[31])) ? $liste[31] : Null;
    					$liste[32] = (isset($liste[32])) ? $liste[32] : Null;
    					$liste[33] = (isset($liste[33])) ? $liste[33] : Null;
    					$champs1=$liste[0];
    					$champs2=$liste[1];
    					$champs3=$liste[2];
    					$champs4=$liste[3];
    					$champs5=$liste[4];
    					$champs6=$liste[5];
    					$champs7=$liste[6];
    					$champs8=$liste[7];
    					$champs9=$liste[8];
    					$champs10=$liste[9];
    					$champs11=$liste[10];
    					$champs12=$liste[11];
    					$champs13=$liste[12];
    					$champs14=$liste[13];
    					$champs15=$liste[14];
    					$champs16=$liste[15];
    					$champs17=$liste[16];
    					$champs18=$liste[17];
    					$champs19=$liste[18];
    					$champs20=$liste[19];
    					$champs21=$liste[20];
    					$champs22=$liste[21];
    					$champs23=$liste[22];
    					$champs24=$liste[23];
    					$champs25=$liste[24];
    					$champs26=$liste[25];
    					$champs27=$liste[26];
    					$champs28=$liste[27];
    					$champs29=$liste[28];
    					$champs30=$liste[29];
    					$champs31=$liste[30];
    					$champs32=$liste[31];
    					$champs33=$liste[32];
    					$champs34=$liste[33];
    					if($champs1!=''){
     
    						$cpt++;
    						$db = new mysqli("localhost", "anniv", "anniversaire", "AUTOMATES");
    						$sql = ("INSERT INTO TIMERSIMA2 VALUES('','$champs1','$champs2','$champs3','$champs4','$champs5','$champs6','$champs7','$champs8','$champs9','$champs10','$champs11','$champs12','$champs13','$champs14','$champs15','$champs16','$champs17','$champs18','$champs19','$champs20','$champs21','$champs22','$champs23','$champs24','$champs25','$champs26','$champs27','$champs28','$champs29','$champs30','$champs31','$champs32','$champs33','$champs34')"); 
    						$result = $db->query($sql);
    						 // pour ne pas insérer la première ligne si elle contient les entêtes de colonnes
     
    					}
     
    				}
    			fclose($fp);
     
    ?>
    “L’homme est la mesure de toute chose” Protagoras
    "Goutte après goutte l'eau finit par creuser le marbre"

    Pensez à mettre !
    Si un message vous a aidé , pensez à mettre !

    Mon Twitter
    Ma Veille Techno

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    tu l'ouvres dans notepad++ et tu fais encodage/convertir en utf-8

  3. #3
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    Non, le csv sera gérer par quelqu'un qui n'est pas informaticien , il n'a pas notepadd++ en plus!!
    “L’homme est la mesure de toute chose” Protagoras
    "Goutte après goutte l'eau finit par creuser le marbre"

    Pensez à mettre !
    Si un message vous a aidé , pensez à mettre !

    Mon Twitter
    Ma Veille Techno

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne pense pas qu'on puisse convertir l'ensemble du fichier en une seule instruction. Par contre, tu dois pouvoir lire le fichier et convertir ligne à ligne.

    Le problème c'est qu'il faut connaitre l'encodage source, ou bien le détecter (ne serait-ce que pour éviter de tenter de convertir un fichier déjà en UTF-8)

    Au passage, je te conseille d'utiliser plutôt les fonctions mb_xxxx pour ce genre de manipulation : mb_​detect_​encoding et mb_​convert_​encoding

    Quelque chose comme ça (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $lines = file ($fichier);
    // on détecte l'encodage en se basant sur la 1ere ligne :
    $enc = mb_detect_encoding($lines[0], "UTF-8", true);
    if (strtolower($enc) != "utf-8") {
        // l'encodage source n'est pas UTF-8, on convertit :
        $lines = mb_convert_encoding($lines,  'UTF-8', $enc);
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Convertir fichier csv unix en dos
    Par faulk dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 21/07/2010, 10h51
  2. [XL-2003] Sauvegarder fichier csv en utf-8 sans BOM
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2010, 10h43
  3. Convertir fichier csv
    Par harlockbaz dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/01/2008, 11h22
  4. [XML] convertir fichier CSV en XML
    Par Yudala dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 16/02/2007, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo