Forum Programmation.shell Accents sous Unix

Posté par  .
Étiquettes : aucune
0
13
juil.
2006
Bonjour,

J'ai un fichier que je transfère depuis Windows vers un serveur Unix et j'aimerais effectuer diverses opérations dessus. Le problème c'est que ce fichier contient des accents et que les commandes unix ne prennent pas en compte ces accents, et que le résultat d'un grep par exemple sera faux. J'ai essayé de remplacer les accents ( avec la commande tr ) qui ne s'affichent pas comme accent mais sous la forme de caractères bizares, mais cela ne fonctionne pas. Normal me direz-vous puisque ' tr ' ne reconnaît pas non plus les accents. Mais alors comment faire ?

Merci d'avance.

Johann
  • # iconv ?

    Posté par  (site web personnel) . Évalué à 4.

    Sans doute ton fichier n'est pas dans le "bon" encodage, typiquement un fichier UTF8 affiché dans un terminal ISO-8859-15 affichera des é à la place des é.

    Pour y remédier, tu fais un iconv -f utf-8 -t iso-8859-15 -o monnouveaufichier monancienfichier

    Dès lors, tu pourras utiliser les outils standards (grep et cie), qui acceptent bien évidemment de travailler avec des accents.

    Une autre solution serait de changer temporairement de locale, par exemple passer en locale UTF8, mais si, comme je l'imagine, tu utilises putty depuis windows, ca risque de compliquer les choses.
    • [^] # Re: iconv ?

      Posté par  . Évalué à 1.

      La première méthode fonctionne bien sur certains fichiers, mais pas sur celui en question, qui est un fichier csv ( carnet d'adresses ). Lorsque je lance la commande, il m'affiche l'erreur :

      Séquence d'échappement illégale à la position 6

      Que veut dire cette erreur ?

      Merci.
      • [^] # Re: iconv ?

        Posté par  (site web personnel) . Évalué à 1.

        Ton fichier aurait peut-être un BOM ?
        http://fr.wikipedia.org/wiki/Marque_d%27ordre_des_octets

        Je ne sais pas si iconv les gère.
        • [^] # Re: iconv ?

          Posté par  . Évalué à 1.

          Et comment je vois que c'est un BOM ?
          • [^] # Re: iconv ?

            Posté par  (site web personnel) . Évalué à 1.

            Et bien moi j'ai 2 moyens pour voir si un fichier à un BOM :

            1) si tu as eclipse installé, tu ouvres ton fichier avec et dans le fenêtre des propriétés du fichier tu verras l'encoding du fichier, suivi (s'il y a lieu) de la mention "Byte Order Mark".

            2) avec un éditeur ne reconnaissant pas l'UTF-8, genre WinVI sous Windows (je n'ai pas eu l'occasion de tester avec VI tout court sous linux : c'est le genre de problème que je n'ai qu'au boulot), cela apparait sous la forme de 3 caractères "bizarres" en tête de fichier. Pour le supprimer, j'enlève sans autre forme de procès ces 3 caractères dans WinVI.

            Sinon si tu es vraiment geek, je suppose que la commande unix "od" te révèlera 3 caractères précédent le premier caractère "utile" de ton fichier.
      • [^] # Re: iconv ?

        Posté par  . Évalué à 2.

        man iconv

        regarde du coté de l'option 's' ou 'c'
  • # file *

    Posté par  (site web personnel) . Évalué à 5.

    Pour connaitre l'encodage de départ, tu peux utiliser la commande "file".
  • # Encodage Texte Dos

    Posté par  . Évalué à 1.

    J'ai à présent un autre problème. J'ai un programme batch qui demande à l'utilisateur de rentrer différents paramètres, et qui lance ensuite une commande unix sur un serveur distant en passant les données entrées précédement comme paramètre de cette commande. Le problème c'est que lorsque l'utilisateur entre des données avec des accents dans la console dos, elles seront passées à la commande unix avec un encodage différents de celui du système unix. Par exemple, ma commande unix recevra des données avec un caractère du genre "þ" pour un "è". Y a-t-il une solution à ce problème ?

    Merci d'avance.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.