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 :

Caractères spéciaux dans une expression régulière


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Par défaut Caractères spéciaux dans une expression régulière
    Salut tout le monde,
    je vous explique mon problème, j'ai des fichiers textes que j'ai passé en utf-8, mais au passage le caractère œ (oe) s'affiche comme ceci: œ (un carré avec 4 chiffres dedans). J'espère que vous pourrez lire mon message ou au moins me comprendre... Bon bref j'ai voulu tirer parti du perl pour modifier ces caratères dans les fichiers, voilà mon script (je les passent en paramètre):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/usr/bin/perl
    $i = 1;
    while(<>){
    	print "$i:\t$_" if($_ =~ s/œ/œ/go);
    	$i++;
    }
    J'ai aussi essayé s/\œ/\œ/go mais sans effet, le script tourne bien me trouve toutes les occurences mais ne remplace rien... Auriez-vous une idée?

    Je vous remercie d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    C'est pas très clair ton truc. Si j'étais toi je regarderais déjà le fichier avec un éditeur hexa (hexdump par exemple), pour voir exactement comment est codé le caractère. Sans ça, difficile de savoir.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Par défaut
    Salut, merci de t'occuper de moi.

    Alors celui que je ne veux pas est codé "C2:9C" et le bon est "C5:93", en utf8 bien sûr.
    En fait c'est des fichiers txt en latin1 que je convertit en utf8 via gedit, tous les caractères sont convertits correctements sauf ('oe', mais en un seul caractère), ils sont affichés comme un carré. Voir le gif joint avec les deux caractères en exemple.

    Merci
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ton problème c'est que ton texte initial n'était pas en latin1. Il n'y a pas de "œ" dans latin1. Puisque tu te retrouves avec C2:9C, ton texte original était du Windows-1252, qui est différent du latin1 (MS aime bien faire les choses à sa sauce) et dans lequel 9C est effectivement "œ".

    Le plus simple si tu as toujours le fichier initial, c'est de le reconvertir. Je te conseille d'utiliser iconv plutôt que gedit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iconv -f Windows-1252 -t UTF-8 fichier_entree > fichier_sortie

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Par défaut
    ta méthode fonctionne, cela sera même plus simple

    merci beaucoup et bon week end

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

Discussions similaires

  1. Affichage caractéres spéciaux dans une alert.
    Par nebule dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/05/2006, 13h51
  2. [RegEx] caractère spéciaux dans une chaine
    Par BigBarbare dans le forum Langage
    Réponses: 3
    Dernier message: 12/04/2006, 11h53
  3. Caractères spéciaux dans une boite de dialogue
    Par Rafiki dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 09/03/2006, 14h05
  4. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  5. Réponses: 6
    Dernier message: 17/08/2005, 12h38

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