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

Interfaces Graphiques Perl Discussion :

Tk, utf8 et windows


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Tk, utf8 et windows
    Voici un script exemple qui a pour but de créer un répertoire C:/âme quand on clique sur le bouton.
    Il y a des accents dans le nom du répertoire et sur la fenêtre Tk.
    On remarquera que les accents s'affichent bizarrement.
    Le script est au format utf8.

    âme = âme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;    # Appel du module Tk
     
     
    # Programme principal
    # Création de la fenêtre
    my $fenetre = new MainWindow(
      -title      => "Première fenêtre Tk ",
      -background => "white",
    ); 
     
    # Taille minimale de ma fenêtre   
    $fenetre->minsize(300,100);
     
    my $MessageAccueil = "TéTé âme\n\n";
    # Affichage d'un texte   
    my $LabelAccueil = $fenetre->Label( 
      -text       => $MessageAccueil,
      -background => "white",  
    )->pack();
     
    # Affichage d'un bouton pour fermer la fenêtre
    my $bouton = $fenetre -> Button (
        -text    => "Créer répertoire (C:/âme)", 
    	-command => sub { mkdir("C:/âme"); },
    )->pack();
     
    MainLoop();  # Obligatoire
    Si je lance ce script et clique sur le bouton, il me crée un répertoire C:/âme, mais moi je veux âme.

    je rajoute donc dans le script.
    Du coup, dans ma fenêtre TK, tous les accents sont correct;
    Mais j'ai toujours un répertoire C:/âme qui se crée

    j'essaye d'utiliser le module encode et je modifie donc
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mkdir( encode("latin1", decode( "utf8", "C:/âme" ) ) ) or die("C:/âme $!");
    mais ça ne fonctionne toujours pas, il ne crée plus rien vu qu'en sorti dans les caractères bizarre remplaçant â, il y a une parenthèse.

    comment faire pour utiliser use utf8; et ensuite reconvertir un string en latin1 afin de créer un répertoire C:/âme par exemple proprement.

    Merci

  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
    il faut utiliser l'encode iso

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mkdir( encode("iso-8859-1", "C:/âme") );
    et tout est Ok en gardant use utf8;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;    # Appel du module Tk
    use utf8;
    use Encode;
     
    # Programme principal
    # Création de la fenêtre
    my $fenetre = new MainWindow(
      -title      => "Première fenêtre Tk ",
      -background => "white",
    ); 
     
    # Taille minimale de ma fenêtre   
    $fenetre->minsize(300,100);
     
    my $MessageAccueil = "TéTé âme\n\n";
    # Affichage d'un texte   
    my $LabelAccueil = $fenetre->Label( 
      -text       => $MessageAccueil,
      -background => "white",  
    )->pack();
     
    # Affichage d'un bouton pour fermer la fenêtre
    my $bouton = $fenetre -> Button (
        -text    => "Créer répertoire (C:/âme)", 
    	-command => sub { mkdir( encode( "iso-8859-1", "C:/âme" ) ); },
    )->pack();
     
    MainLoop();  # Obligatoire

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 17/02/2016, 08h58
  2. [Lazarus] [Windows] UTF8 et noms de fichiers
    Par ThWilliam dans le forum Lazarus
    Réponses: 7
    Dernier message: 23/03/2014, 12h16
  3. Réponses: 3
    Dernier message: 14/05/2012, 11h56
  4. passage de php4 à php5 /windows/utf8
    Par lemra dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/08/2010, 00h33
  5. C sous Windows, fichiers en utf8
    Par troumad dans le forum Windows
    Réponses: 15
    Dernier message: 07/05/2007, 11h58

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