Caractères spéciaux sous unix

Résolu/Fermé
dino - Modifié le 10 nov. 2022 à 11:54
 dino - 17 nov. 2022 à 08:52

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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
9 nov. 2022 à 15:31

hello

que répond

file MONFICHIER.csv
0

Déjà merci pour la réponse.

Voici le résultat de la commande :

$ file MONFICHIER.csv
​​​​​​​MONFICHIER.csv: ascii text
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
10 nov. 2022 à 12:01

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

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

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

Posez votre question
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
10 nov. 2022 à 14:09

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

- 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
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
10 nov. 2022 à 16:18

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

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
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
14 nov. 2022 à 20:02

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

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