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

PHP & Base de données Discussion :

Encodage [PostgreSQL 9.2] [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Encodage [PostgreSQL 9.2]
    Bonjour à tous,

    J'ai une base de données postgres en UTF8.

    J'aimerais importer un fichier csv à l'aide d'un script php.
    Dans mon fichier csv il y a des symboles comme " é , è , ç , ê ... etc".

    J'ai converti mon fichier en utf8 grace à notepad++ mais quand j'éxécute le php il y a une erreur qui arrête l'insertion à partir de la ligne où il y a un symbole de ce genre.

    Voici l'erreur :
    ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe9 0x20 0x43
    j'ai eu beau regarder un peu partout sur le web je n'arrive pas à régler le problème :/

    Voici mon code :

    Code : 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
    <?php
     
    // connexion
    $c=pg_connect("host=* dbname=* user=* password=*") or die("Impossible de se connecter");
     
     
    	$sql0 = " delete from table_test; ";
    	pg_query($sql0) or die("Impossible d'executer la requete2");
        $fic = fopen("C:\\Documents\\test_final_3.csv", "r");
        while($tab = fgetcsv($fic,1024,','))
        {
     
    			$sql2 = " 
    				insert into table_test (identifiant, date, libelle, prod, expe, code) values ($$".$tab[0]."$$, $$".$tab[1]."$$, $$".$tab[2]."$$, $$".$tab[3]."$$, $$".$tab[4]."$$, $$".$tab[5]."$$) ";
    			pg_query($sql2) or die(pg_last_error());
        }
        fclose($fic); ?>
    ps: je précise que le script marche très bien sans ces symboles
    Merci d'avance pour essayer de résoudre mon problème ^^

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    E9 est le code hexa du caractère é en iso-latin1. En UTF-8, ça aurait été la séquence C3 A9.

    Donc très certainement, le fichier n'est pas encodé en UTF-8, il faut revoir la procédure de conversion sous Notepad++

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    exact merci c'est un fichier csv que je produit grâce à une macro excel.
    Du coup je vais essayer de convertir en utf8 en vba

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    C'est faisable aussi en php en ajoutant une ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      while($tab = fgetcsv($fic,1024,','))
      {
         $tab=array_map("utf8_encode", $tab);
         // reste du code identique

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    ahh merci ca marche niquel ^^
    Je commençais justement à me casser la tête en vba ^^

    Je passe en résolu merci encore

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

Discussions similaires

  1. Encodage Postgresql 8.4.17
    Par benoxy dans le forum Administration
    Réponses: 0
    Dernier message: 11/10/2013, 23h48
  2. [PostgreSQL 8.3] Problème d'encodage de base
    Par levalp dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 03/09/2010, 15h53
  3. Encodage C# et Postgresql
    Par lilsaint007 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/08/2009, 14h54
  4. problème d'encodage postgresql
    Par Qamalito dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 13/08/2007, 10h36
  5. probleme encodage base postgresql
    Par touane dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/06/2007, 11h36

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