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

Langage Perl Discussion :

problème d'encodage dans print et sur fichier xml


Sujet :

Langage Perl

  1. #1
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut problème d'encodage dans print et sur fichier xml
    Bonjour tout le monde,

    j'ai une variable $text qui est le résultat de sortie d'une fonction qui retourne un string .... mais dans $text .... il y'a des caractères accentués ....et lorsque je fais un print $text; ou lorsque je fais des regexp sur $text , je n'ai pas tous les résultats attendus vu que les caractères accentués sont bizarroïdes :/

    Et du coup, lorsque j'utilise aussi le module XML::Writer pour créer un fichier XML, les caractères accentués sont mal affichés
    Voici un exemple du print $text;
    Son atelier exécute tous types de travaux architecturaux en fer forgé comme la création ... Développement de logiciels de datamining (fouille de données) ...
    on voit "données" à la place de "données" ....

    POURTANT, mon script utilise prend dans ses arguments des chaines contenant des accents ... (fouille de données) ... et lorsque je fais print @ARGV[1] ... j'ai bel et bien "fouille de données" très bien affiché

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    Le module Encode (http://search.cpan.org/~dankogai/Encode-2.39/Encode.pm) peut je pense t'aider.

    cf un post sur des problèmes d'accents dans le shell -> http://www.developpez.net/forums/d91...-saisie-shell/

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par paissad Voir le message
    on voit "données" à la place de "données" ....
    Il s'agit d'un E accentué encodé en UTF8 (2 octets) mais ces 2 octets sont interprétés par un composant d'affichage comme 2 caractères encodés en iso-latin (iso-8859-1 ou iso-8859-15).
    En général les données XML sont encodées en UTF8 comme l'indique la première ligne du fichier:
    <?xml version="1.0" encoding="UTF-8"?>
    Dans ce cas c'est le terminal servant à afficher qu'il faut régler sur de l'UTF8, le fichier lui-même n'a pas de problème.

    Mais d'une manière générale, quand on manipule du texte hors ASCII de base (=américain), il n'est hélas pas possible d'échapper aux questions:
    - quel encodage j'ai en entrée?
    - quel encodage je dois produire en sortie?
    - est-ce que mon programme doit s'adapter à l'environnement d'exécution (variables LANG et LC_* sous Posix) ou est-ce qu'au contraire il doit ignorer l'environnement et forçer un encodage?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    A lire aussi.

  5. #5
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    J'avais oublié de préciser que je suis sous linux donc je pense que ceci ne marchera pas pour moi http://perl.developpez.com/sources/?...nal#AccentsDOS ( je l'avais lu avant de poster ma question)
    Et que par ailleurs j'avais utilisé le module Encode, mais cela ne m'a pas aidé
    voici en gros ce que j'avais fait avec le module Encode;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    use Encode;
     
    # $text est déjà defini et contient un texte
     
    $text = encode("iso-8859-1", $text);
    print $text;
    j'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = encode("utf8", $text);
    j'ai aussi fait use utf8; pour voir ...

    Mais bon, cela n'a rien changé ^^

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    é est l'équivalent du é utf8, donc tu devrais faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = decode("uf8", $text);

  7. #7
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    J'ai réglé la plupart de mes problèmes d'encodage avec decode("utf8",$text); ... mais il y'a un texte que j'ai recupéré par la sortie retournée par d'une fonction d'un autre module que je n'arrive pas à bien encoder.

    En fait, à supposer que j'ai un texte $text dont je ne connais pas forcément l'encodage ... comment "bien procéder" afin de tenir compte des accents lors de l'affichage vers STDOUT ou dans un fichier ...

    Encore merci pour votre aide

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par paissad Voir le message
    En fait, à supposer que j'ai un texte $text dont je ne connais pas forcément l'encodage ... comment "bien procéder" afin de tenir compte des accents lors de l'affichage vers STDOUT ou dans un fichier ...
    Peut-être utiliser Encode::Guess() pour trouver l'encodage probable du texte.

  9. #9
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    bon finalement, je n'ai plus de problème d'encodage, je me suis débrouillé à mettre decode('utf8',$text) le plus souvent possible ....

    Merci à tous pour votre aide, résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 26/07/2010, 08h59
  2. [Joomla!] problème d'encodage dans mon site
    Par habiba dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 08/04/2009, 23h56
  3. Réponses: 5
    Dernier message: 30/01/2008, 14h47
  4. Réponses: 1
    Dernier message: 13/12/2006, 21h31

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