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 :

Encodage de texte et affichage des accents


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut Encodage de texte et affichage des accents
    Bonjour,

    J'ai réaliser un programme perl qui à l'aide d'un dictionnaire (fichier XML) décode un fichier de log.

    Mon fichier perl est encodé en ASCII et mon fichier XML en unicode

    Lorsque je lance mon programme avec perl via Cygwin tout fonctionne bien j'ai bien mes accents.

    Par contre lorsque je veux lancer ce programme sur un autre PC mais avec une autre distrib de perl (Strawberry par exemple), aucun caractère accentué n'est affiché.

    J'ai eu beau jouer avec tous les encodages (UTF-8, ISO-8859-1, etc..) rien ne fonctionne...

    si une bonne âme pouvais m'aider, je lui en serais reconnaissant.

    PS: ci-joint le programme, le fichier XML et un exemple de log
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    En ouvrant tes fichiers sous PSPad, je remarque que ton fichier log est encodé en utf-8, xml en utf-16 LE et script perl en ANSI, est ce normal ?

  3. #3
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Ton souci est un problème de terminal. Nous avons déjà traité le sujet et tu auras la réponse ici.

    Je viens de tester ton programme chez moi avec quelques modifications et ça fonctionne.
    Voici les modifications apportées :
    - indentations
    - rajout de codes pour la gestion du code terminal (Sous DOS)
    - Lecture du fichier en utf8
    - Le programme doit être en utf8.
    - et peut être d'autres, je ne me rappelle plus.

    Voici ce que j'obtiens sous DOS en utilisant ActivePerl 5.10
    srfil.pl test.log

    could not find ParserDetails.ini in C:/Perl/site/lib/XML/SAX

    ***********************************************************************************************************

    10-07-20/04 H 28 MN 44 EVT=05 :FIN LOCAVAR AUTO
    /AM = SMTB4 ETAT=TEST AF=URMB4
    / 0205 1007 2004 2844 03E7 0243 0000 0000 0000 0000 0000 0000
    / 17AE 9101 0103 0000 0000 0000 0000 0000 0000 0000 0000 0046
    / 1410 0410 0700 022D 4200 FE08 6A00 4000 0400 4082 8000 0000
    / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    / 0000 0000 0000
    -----
    Evènement : Fin LOCAVAR automatique (evt = 05)
    Date : 20/07/2010
    Heure : 04:28:44
    Station : SMTB4 (am = 03E7)
    Liste des ML de la Station : URMB4 (ml = 0243)
    Positionnement primaire : En Service (ES) (posp = 1)
    Etat courant : En cours de test (etac = 7)
    Cause : Réponse différée à la demande de positionnement en TEST (codm = AE91)
    Détail : Signale la fin des tests locavar
    Diagnostic LOCAVAR : Défaut carte, applique ou SAB (pdia = 01)
    Nombre de cartes accusées : 01
    RGCA des cartes accusées : 003
    Groupe de LR (nglr) : 0000
    Element accusé (elac) : 46
    Numéro de stratégie (nstr) : 1
    Nombre de stratégie (nbstr) : 0
    Numéro de test (ntst) : 04
    registre icmat (icmat) : 10
    Numéro de séquence (nseq) : 07
    Id Diag : 00022D42
    Id Diag : 00FE086A
    Id Diag : 00400004
    Id Diag : 00408280
    Id Diag : 00000000
    Id Diag : 00000000
    Id Diag : 00000000
    Id Diag : 00000000
    Nb cartes externes accusées: 00

    ***********************************************************************************************************

    ***********************************************************************************************************

    10-01-01/02 H 25 MN 58 EVT=05 :FIN LOCAVAR AUTO
    /AM = SMB3 ETAT=TEST
    / 0205 1001 0102 2558 0482 0000 0000 0000 0000 0000 0000 0000
    / 17AE 9100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    / 0000 0000 0000
    -----
    Evènement : Fin LOCAVAR automatique (evt = 05)
    Date : 01/01/2010
    Heure : 02:25:58
    Station : SMB3 (am = 0482)
    Positionnement primaire : En Service (ES) (posp = 1)
    Etat courant : En cours de test (etac = 7)
    Cause : Réponse différée à la demande de positionnement en TEST (codm = AE91)
    Détail : Signale la fin des tests locavar
    Diagnostic LOCAVAR : Pas de diagnostic (pdia = 00)

    ***********************************************************************************************************

    ***********************************************************************************************************

    10-01-06/02 H 23 MN 41 EVT=05 :FIN LOCAVAR AUTO
    /AM = SMB3 ETAT=TEST
    / 0205 1001 0602 2341 0482 0000 0000 0000 0000 0000 0000 0000
    / 17AE 9101 0110 0000 0000 0000 0000 0000 0000 0000 0000 0003
    / 2400 9400 0000 0000 03FE FF40 0C00 0080 0100 0180 0100 0000
    / 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    / 0000 0000 0000
    -----
    Evènement : Fin LOCAVAR automatique (evt = 05)
    Date : 06/01/2010
    Heure : 02:23:41
    Station : SMB3 (am = 0482)
    Positionnement primaire : En Service (ES) (posp = 1)
    Etat courant : En cours de test (etac = 7)
    Cause : Réponse différée à la demande de positionnement en TEST (codm = AE91)
    Détail : Signale la fin des tests locavar
    Diagnostic LOCAVAR : Défaut carte, applique ou SAB (pdia = 01)
    Nombre de cartes accusées : 01
    RGCA des cartes accusées : 016
    Groupe de LR (nglr) : 0000
    Element accusé (elac) : 03
    Numéro de test (ntst) : 0094
    registre icmat (icmat) : 00
    Numéro de séquence (nseq) : 00
    Id Diag : 00000003
    Id Diag : FEFF400C
    Id Diag : 00008001
    Id Diag : 00018001
    Id Diag : 00000003
    Id Diag : 00000000
    Id Diag : 00000000
    Id Diag : 00000000
    Nb cartes externes accusées: 00

    ***********************************************************************************************************
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Whaou.... Merci

    Effectivement après une lecture plus longue sur le net, il apparaissait bien que c'était un problème avec le terminal Windows mais aucune solution n'en était ressorti.

    Juste une question pour ma compréhension:
    Peux-tu m'expliquer ta fonction "ActiverAccentDOS" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub ActiverAccentDOS {
      my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
      foreach my $h ( \*STDOUT, \*STDERR, \*STDIN ) {
        binmode $h, ":encoding(cp$codepage)";
      }
    }

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

Discussions similaires

  1. [Encodage] Encodage - affichage des accents - Kompozer et notepad+ : au secours !
    Par Invité dans le forum Langage
    Réponses: 0
    Dernier message: 04/08/2014, 12h06
  2. [FLASH 8] Affichage des accents
    Par jbidou88 dans le forum Flash
    Réponses: 2
    Dernier message: 31/10/2006, 10h19
  3. Réponses: 1
    Dernier message: 22/12/2005, 16h45
  4. Réponses: 1
    Dernier message: 21/11/2005, 12h37
  5. Réponses: 11
    Dernier message: 16/12/2003, 20h58

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