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

Programmation et administration système Perl Discussion :

Perl et les accents français!?!?


Sujet :

Programmation et administration système Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2011
    Messages : 22
    Points : 33
    Points
    33
    Par défaut Perl et les accents français!?!?
    Bonjour à tous,

    Je m'occupe d'un petit parc informatique d'une vaintaine d'employés.
    J'ai installé sur chaque poste (XP/Vista/7), un logiciel qui fait des sauvegardes quotidiennes, mais localement seulement.

    Je veux ouvrir un répertoire en partage, sur un serveur de fichier et, m'assurer d'une copie de chaques sauvegardes, de chaques postes.

    J'ai créer un script Perl qui, entre autres, fait une listes des fichiers qui sont dans le répertoire d:/Backup et les copie, sur le partage distant.

    Le problème est que si un nom de fichier contient un accent (à, ç, é, etc.), l'accent est remplacé par un symbole quelconque (i.e. é devient Ü).

    Par trace, je vois que les accents ont déjà été modifié au moment de la lecture du répertoire; avant même qu'ils soient copiés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    opendir hDossierALire, $dir || die("Impossible d'ouvrir le dossier...");
     
    print "\n\nListe A : \n\n";
     
    foreach $nomFichier (readdir hDossierALire) 
    {
        print $nomFichier."\n" if $nomFichier =~ m/zip$/i;      # Les accents sont changés.
        push (@liste_A, $nomFichier) if $nomFichier =~ m/zip$/i;   
    }
     
    close (hDossierALire);
    Merci pour votre aide et vos suggestions.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2011
    Messages : 22
    Points : 33
    Points
    33
    Par défaut
    Bonjour à la communauté,

    À force de poursuivre mon scripte et faire des tests, je me suis rendu compte que les caractères ne change qu'à l'affichage.

    Lorsque la copie des fichiers s'éffectue, les accents sont correctement transposés, de l'original au fichier copié.

    Par contre, j'ai eu beaucoup de misère avec le fait que les fichiers de backups, contenaient des espaces et des points-virgules.

    J'ai pu corrigé le format des noms de fichiers pour qu'il ne contiennent plus d'espace ou de point-virgule.

    J'ai dû, par contre, faire un scripte pour renommer sur les postes, les fichiers de backups déjà créer.

    MAIS : Le scripte renomme les fichiers sans problème avec les accents.

    Scripte pour renommer les fichiers :

    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
     
    # Change un fichier : Backup 2012-04-10 16;18;13 (Différentielle.)
    # en un fichier        : Backup_2012-04-10_16h18m13s(Différentielle.)
     
    $dir = "C:\\repertoire";
    opendir hDossierALire, $dir || die("Impossible d'ouvrir le dossier...");
     
    foreach $nomFichier (readdir hDossierALire) 
    {
        push (@liste_A, $nomFichier) if $nomFichier =~ m/zip$/i;   
    }
     
    close (hDossierALire); 
     
    foreach $nomFichier (@liste_A) 
    {
        $nomFichierA = $nomFichier;    
        $nomFichier =~ s/\s+/_/g;
        $nomFichier =~ s/\;/h/i;
        $nomFichier =~ s/\;/m/i;
        $nomFichier =~ s/_\(/s\(/i;
        $old = "C:\\repertoire\\".$nomFichierA;
        $new = "C:\\repertoire\\".$nomFichier;
        rename($old, $new);
    }
    Bref, quand j'aurai besoin d'écrire un scripte qui devra afficher des caractères accentuées à l'écran, j'aurai alors un problème mais, pour l'instant, Perl fait mon bonheur.

  3. #3
    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 : 499 184
    Points
    499 184
    Par défaut
    Voici un lien important à lire : http://perl.developpez.com/faq/perl/...ListerFichiers

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

Discussions similaires

  1. Les accents français en Ruby
    Par MarcRay dans le forum Ruby
    Réponses: 8
    Dernier message: 16/03/2012, 21h28
  2. [JDOM] Problème avec les accents français lors de création de fichier Xml
    Par jean1979 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/01/2012, 10h08
  3. les accents et perl ?
    Par Girzi dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2006, 13h27
  4. {debutant} perl et les accents...
    Par kriskikout dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2006, 17h47
  5. [firebird 1 et les accents français]
    Par Lucien dans le forum Débuter
    Réponses: 2
    Dernier message: 06/10/2005, 13h50

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