Caractères spéciaux sous unix

Résolu
dino -  
 dino -

Bonjour,

J'exporte un tableau sous Unix à partir d'un base oracle. Dans la base, il y a des noms et des mots avec des "é" et « à ». Quand je lis mon fichier en csv sous Unix ces lettres se transforment en "é". Par exemple : "Réalisée" deviens "Réalisée".

J'ai essayé :

iconv -f IBM-1252 -t UTF-8 MONFICHIER.csv

... mais j'ai toujours le même problème

Si quelqu'un a une idée

Merci beaucoup


Windows / Firefox 106.0

10 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    hello

    que répond

    file MONFICHIER.csv
    0
  2. dino
     

    Déjà merci pour la réponse.

    Voici le résultat de la commande :

    $ file MONFICHIER.csv
    ​​​​​​​MONFICHIER.csv: ascii text
    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    Peux-tu partager un csv minimal qui met en évidence le problème sur un site comme https://www.cjoint.com/.

    Tu as effectivement un problème d'encodage et ta commande iconv n'utilise probablement pas le bon encodage source ou cible. Côté Linux je te recommande de toujours n'utiliser que de l'UTF-8. Typiquement la commande locale devrait retourner :

    (mando@silk) (~) $ locale
    LANG=fr_FR.UTF-8
    LANGUAGE=
    LC_CTYPE="fr_FR.UTF-8"
    LC_NUMERIC="fr_FR.UTF-8"
    LC_TIME="fr_FR.UTF-8"
    LC_COLLATE="fr_FR.UTF-8"
    LC_MONETARY="fr_FR.UTF-8"
    LC_MESSAGES="fr_FR.UTF-8"
    LC_PAPER="fr_FR.UTF-8"
    LC_NAME="fr_FR.UTF-8"
    LC_ADDRESS="fr_FR.UTF-8"
    LC_TELEPHONE="fr_FR.UTF-8"
    LC_MEASUREMENT="fr_FR.UTF-8"
    LC_IDENTIFICATION="fr_FR.UTF-8"
    LC_ALL=

    Par ailleurs, plutôt que de passer par iconv pour corriger l'encodage a posteriori, c'est plutôt au moment d'interroger ta base Oracle que tu devrais spécifier l'encodage de ton fichier csv (voir ce lien).

    Bonne chance

    0
  4. dino
     

    Merci pour la réponse.

    Je enlevé le iconv , mais j'ai le même soucis , et pour la base , elle est pas interrogé par windows , mais en unix.

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    • Comment l'interroges-tu (quel logiciel, quelle requête) ?
    • Peux-tu partager un exemple minimal de ton fichier csv ?
    • As-tu essayé cette solution ?

    Bonne chance

    0
  7. dino
     

    - la connexion est sur une base oracle 19c , via sqlplus

    - la requette :

    SELECT '1;','2;','3;',.......,'n;'  FROM ZT00 T00,
    table1,
    table2,
    table3,

    ......

    dans le champs 3 et 4 il y'a l'info : "realisée" et "présent"

    qui sont correctement mentionnés avec les "é"

    je redirige vers un fichier MONFICHIER.csv , mais dans mon fichier que j'ouvre sous unix , je vois les caracteres "é" a la place des "é"

    - exemple du fichier :

    NOM   Prenom   lieu  STATUT   STATUT             ANNEE

    X          X      X         Réalisée     Présent              2020

    - pour tester la solution , je ne sais pas ou placer le "'UTF8', 'WE8MSWIN1252')" , j'ai tellement de champs :-( 

    0
  8. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    je redirige vers un fichier MONFICHIER.csv , mais dans mon fichier que j'ouvre sous unix , je vois les caracteres "é" a la place des "é"

    Peux-tu préciser comment tu procèdes pour faire cette redirection ?

    Peux-tu partager ton fichier CSV (au moins quelques lignesà sur cjoint qui met le problème en évidence, comme demandé dans le message #3 ?

    0
  9. dino
     

    spool MONFICHIER.csv

    SELECT '1;','2;','3;',.......,'n;'  FROM ZT00 T00,
    table1,
    table2,
    table3,

    ......

    spool off

    mis un exemple de fichier dans : https://www.cjoint.com/c/LKkpKuEB2Nq

    0
  10. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    Peux-tu partager le fichier csv que tu as généré plutôt qu'un export excel ?

    En copiant collant le contenu de ton fichier excel dans un fichier Excel j'ai obtenu ceci :

    (mando@silk) (~) $ cat toto.csv 
    NOM     Prenom        STATUT_SESSION     STATUT_STAGIAIRE        ANNEE_STAGE
    Pierre  Dupond   Réalisée      Présent 2020
    Michel  LEMOINE  Réalisée      Présent 2020
    Marie   TALEU    Réalisée      Présent 2020

    Vu la tête des caractère, ça ressemble à du CP1252 (Unicode) converti à tort en UTF-8 deux fois de suite. Et en faisant la transformation inverse deux fois, j'arrive à récupérer les bons caractères :

    (mando@silk) (~) $ iconv -f UTF-8 -t CP1252 toto.csv | iconv -f UTF-8 -t CP1252
    NOM     Prenom        STATUT_SESSION     STATUT_STAGIAIRE        ANNEE_STAGE
    Pierre  Dupond   Réalisée            Présent    2020
    Michel  LEMOINE  Réalisée            Présent    2020
    Marie   TALEU    Réalisée            Présent    2020

    Pour récupérer le fichier tu peux donc lancer :

    (mando@silk) (~) $ iconv -f UTF-8 -t CP1252 toto.csv | iconv -f UTF-8 -t CP1252 > tata.csv
    
    (mando@silk) (~) $ cat tata.csv 
    NOM     Prenom        STATUT_SESSION     STATUT_STAGIAIRE        ANNEE_STAGE
    Pierre  Dupond   Réalisée            Présent    2020
    Michel  LEMOINE  Réalisée            Présent    2020
    Marie   TALEU    Réalisée            Présent    2020
    
    (mando@silk) (~) $ file tata.csv 
    tata.csv: Unicode text, UTF-8 text

    Je ne connais pas oracle dans le détail, mais clairement, l'encodage utiliser par ta commande SPOOL n'est pas le bon. Je t'invite donc à regarder cette discussion.

    Bonne chance

    0
  11. dino
     

    Bonjour ,

    Merci beaucoup !

    Ça fonctionne , juste comme mon fichier contient beaucoup plus de ligne que ça , j'ai du faire en 2 fois

    Merci beaucoup et bonne journée

    0