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 :

Perl et les caractères accentués dans le terminal windows


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut Perl et les caractères accentués dans le terminal windows
    Bonjour à tous,
    J'ai fait un petit programme en perl sous FreeBSD et il tourne bien ; en voulant l'exécuter sous Windows aucun des caractères accentués ne s'affiche correctement. Cela ne tient pas tant à perl qu'aux limitations de la console win aux caractères ascii. Y a-t-il une solution pour que le script fonctionne bien sous windows ?
    Thanks
    ++

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Salut

    Le problème ne vient pas de Perl. En fait, c'est un problème de localisation. Si je ne me trompe pas, Windows tourne en ISO-8859-1 et BSD doit tourner UTF-8.
    Si tes messages sont codés en dur dans ton script Perl, tu peux utiliser l'un de mes cripts dans le thread snippets qui fera la conversion de l'un vers l'autre format et inversement.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La console win n'est pas limité aux caractère ASCII mais utilise une page de codes non-standard. Fait "chcp 1252" pour arranger ça (attention, il peut-être nécessaire de changer aussi la police dans les propriétés du raccourci).

    --
    Jedaï

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Arf ! Tellement l'habitude de mon Nunux que je savais même pas ça. Merci Jedai !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Hello à tous
    Merci pour votre aide

    GLDavid > en fait dans les locales de FreeBSD j'ai LC_CTYPE sur fr_FR.ISO8859-1 donc le problème ne doit pas venir d'un conflit utf/iso. Je garde quand même tes snipplets sous la main parce que pour avoir déjà eu des problèmes utf/iso, je sais que c'est utile...

    Jedaï > Je vois bien l'effet de "chcp 1252", mais pas dans le bon sens ; je m'explique. Si je tape, en pagecode 850 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\>echo print "éèêôîïüà"; > test.pl && test.pl
    éèêôîïüà
    le fichier test.pl contient en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "‚Šˆ“Œ‹…";
    En pagecode 1252, ce qui s'affiche dans la console ne va pas (des caractères grecs...) mais le contenu de test.pl est bon (print "éèêôîïüà"; ).

    En bref : pc 850 => bon dans la console, mauvais dans le script // pc 1252 => mauvais dans la console, bon dans le script.
    Même remarque si au lieu de générer un script perl on génère un script batch.

    Maintenant, si je prends le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $var="héhé\n";
    print $var;
    $var=~s/é/‚/g;
    print $var;
    J'ai à l'écran : NB1: attention la virgule dans la substitution n'est pas la virgule normale mais un copy paste de celle contenue dans ‚Šˆ“Œ‹…
    NB2: J'ai oublié de le mentionner, mais le problème existe avec les caractères accentués mis "en brut" dans un fichier texte de 4000 lignes lu par le script perl ; ceux qui sont récupérés via <STDIN> s'affichent sans problème.

    Bref, il y a un semblant de solution qui se dessine. Je pourrais faire une sub qui soit exécuté si l'OS et win et qui s'occupe de corriger tous les caractères accentués. Voyez-vous une autre solution ?

    ++

    Kloss

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu es sûr d'avoir bien changé la police ? Normalement, sous WinXP en tout cas, le changement de police + le changement de page de code doit te permettre d'obtenir des résultats semblable entre la console et les scripts tapé dans l'environnement windows normal.


    C'est à dire que si tu tapes sous notepad le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #! /usr/bin/perl
     
    print "Hé, cette satané console marche enfin !";
    Tu dois avoir un affichage correct en lançant ce script sous la console.

    Par ailleurs, il y a un module qui permet de transcrire les strings pour affichage sur la console Windows, essaie de le retrouver avant de te lancer dans l'écriture d'une fonction pour ça.
    --
    Jedaï

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Aaaah mais oui ça marche en mettant "Lucida Unicode" comme police de la console !!!
    Dsl je n'avais fait que le changement chcp 1252.
    C'est nickel, merci bcp Jedaï
    ++

    Au fait je ne sais pas si vous avez vu le programme Google Earth (uniquement win32 malheureusement) ; il est énorme.

    Et merci pour les cours et tutoriels pour apprendre Perl c'est parfait : http://perl.developpez.com/cours/

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/02/2009, 15h59
  2. les caractères accentués dans les TextBox
    Par zooffy dans le forum ASP.NET
    Réponses: 5
    Dernier message: 01/08/2008, 16h53
  3. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41
  4. Réponses: 6
    Dernier message: 10/09/2007, 10h44
  5. Réponses: 4
    Dernier message: 10/04/2007, 16h27

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