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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    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
    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);
     
    ?>

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    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 très actif Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    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
    Par défaut
    Non, le csv sera gérer par quelqu'un qui n'est pas informaticien , il n'a pas notepadd++ en plus!!

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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