Caractères spéciaux sous unix
Résoludino -
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
-
hello
que répond
file MONFICHIER.csv
-
Déjà merci pour la réponse.
Voici le résultat de la commande :
$ file MONFICHIER.csv MONFICHIER.csv: ascii text -
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
-
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.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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
-
- 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 :-(
-
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 ?
-
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
-
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 2020Vu 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 2020Pour 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 textJe 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
-
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