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

Shell et commandes GNU Discussion :

Problèmes de conversion avec iconv


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut Problèmes de conversion avec iconv
    Bonjour bonsoir,

    Mon problème c'est que visiblement certains logiciels considèrent que le code hexadécimal 8D fait partie du jeu de caractères Windows-1252 alors que iconv non. Donc je me retrouve par exemple avec l'impossibilité de convertir des fichiers de utf8 vers windows-1252 avec iconv à cause de caractères de contrôle comme le caractère correspondant à 8D.
    Et je me dis que peut-être avec une version plus à jour de iconv je règlerais le problème ou alors en créant une table de conversion pour iconv, mais je ne sais pas trop comment faire.

    Je suis sous Debian et comme je ne m'y connais pas trop en Linux je précise que je ne sais même pas si ça a un sens de vouloir ajouter une table de conversion à iconv ou de vouloir le mettre à jour.

    Voilà, merci de votre aide.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Je ne suis pas un spécialiste de l'encodage de caractères mais peut être pourrais-tu jeter un oeil à utrac, qui sait ?


  3. #3
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Hello,

    Windows-1252 n'utilise pas le caractère 8D, donc si tu as des fichiers encodés en Windows-1252, ils ne devraient pas avoir de 8D. Si tu en as, c'est le logiciel qui créé le fichier d'origine qui est en erreur (et donc pas iconv).

    Cela étant, tu peux utiliser tr pour modifier les caractères qui te posent problème avant de passer par iconv. Exemple bidon, j'ai un fichier qui contient AAADD mais je ne veux pas de D et je veux des _ à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat car.txt
    AAADD
    $ od -tx1 car.txt
    0000000 41 41 41 44 44 0a
    0000006
    $ tr '\104' '_' < car.txt > car2.txt
    $ cat car2.txt
    AAA__
    $ od -tx1 car2.txt
    0000000 41 41 41 5f 5f 0a
    0000006
    od -tx1 affiche un fichier en hexa : le A vaut 41 et le D 44
    tr permet de transposer les occurrences des D (hex 44 = oct 104) en _

    Donc si tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr '\215' '_' <ton_fichier>
    , tu vas virer les caractères qui te gênent...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,
    Je ne suis pas un spécialiste de l'encodage de caractères mais peut être pourrais-tu jeter un oeil à utrac, qui sait ?
    Tiens oui c'est pas mal, j'ai facilement accès à la table de conversion avec utrac.
    Mais si quelqu'un trouve celle d'iconv je suis toujours preneur.

    Alek-C, le problème n'est pas de savoir qui a raison mais c'est de savoir si les versions récentes d'iconv résolvent mon problème.
    Et la solution de remplacer les caractères ça fonctionne mais c'est juste pas pratique du tout, j'espère une solution qui ne rajoute pas d'opérations.... parce que je suis en droit de l'espérer dans le cas présent.

  5. #5
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Ben non, ça ne résoudra rien car je doute qu'iconv, même dans une autre version ne respecte pas un encodage aussi basique que Windows-1252...

    Le but de mon post n'est pas de dire qui a raison, mais juste de démontrer que ça ne sert à rien de chercher si en entrée tu as un fichier mal encodé

    Bref, si tu ne cherches pas à corriger, tu peux simplement ignorer les caractères qui posent problème avec l'option -c...

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut
    Mais ça ne démontre rien non plus et puisque d'autres logiciels gèrent les choses différemment il est tout à fait possible qu'iconv un jour le fasse aussi. La question n'est pas non plus de savoir qui respecte l'encodage ou qui ne le respecte pas.

    Et je ne peux pas ignorer les caractères dans mon cas de figure car je perdrais alors de l'information.

  7. #7
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Bon, tu poses une question, on te répond, mais si la réponse ne te convient pas, je ne vois pas ce que tu veux de plus

    Si je demande à un traducteur anglais/français de traduire ceci : "da haben wir den salat", il ne va pas y arriver car ce n'est pas de l'anglais... ton fichier, c'est pareil : iconv ne convertit pas et ne convertira jamais un fichier encodé en Windows-1252 comportant des caractères 8D car ce caractère n'existe pas dans l'encodage Windows-1252, et donc le fichier ne peut pas être encodé en Windows-1252

    A partir de ce moment là, soit tu fais avec, soit tu cherches à trouver d'où vient le problème puisque toi, tu es persuadé que cela devrait être du Windows-1252 : peut-être que le programme produisant le fichier est erroné, peut-être que le problème vient du cycle de vie de ton fichier (transfert ftp en ascii plutôt qu'en binaire, utilisation d'un système de compression qui va provoquer ce genre de problème d'encodage à la décompression, etc.)...

    Selon que tu trouves ou non l'origine du problème, tu peux tenter de le corriger pour obtenir un fichier correctement encodé.

    Si tu ne trouves pas l'origine du problème ou s'il n'est pas possible de le corriger (dans le cas où c'est la source le problème par exemple), il ne te reste plus qu'à faire avec.

    Et pour ça, tu peux éventuellement aller chercher les sources de iconv (glibc) et modifier l'encodage cp1252 (je le déconseille) ou créer un nouveau type d'encodage (bon courage) pour gérer ton cas particulier.
    Ou tu peux utiliser une des solutions proposées : convertir les caractères par tr ou tu les ignorer par -c (ou utiliser autre chose que iconv).

Discussions similaires

  1. problème de conversion avec dateadd
    Par Bourezak dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/01/2008, 13h16
  2. Problème de conversion avec html_entity_decode
    Par calahaan dans le forum Langage
    Réponses: 1
    Dernier message: 04/03/2007, 09h33
  3. Réponses: 2
    Dernier message: 15/02/2007, 20h25
  4. Problème de conversion avec MSFlexGrid
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/08/2006, 18h08
  5. Problème de conversion avec CONVERT
    Par gowser dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/12/2005, 16h48

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