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 :

Regex supprimer tous les caractères invalides pour l'encodage « UTF8 »


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Regex supprimer tous les caractères invalides pour l'encodage « UTF8 »
    Bonjour,

    J'ai de nouveau un problème de regex (décidémment...)
    Je dois envoyer mes données dans ma base de données, mais à chaque fois qu'il y a un caractère qui n'est pas valide en UTF8, ça aboutit à une erreur.

    J'aimerais donc savoir si c'est possible d'éliminer d'un fichier tous les caractères qui ne sont pas une séquence d'octets valide pour l'encodage « UTF8 » (Par exemple : ª (0xaa) ...)

    Merci de vos réponses.

  2. #2
    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 peux utiliser le module Encode pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use Encode;
     
    $data = decode ('UTF-8', encode ( 'utf8', $data ), sub { return "" } );
    devrait faire l'affaire.

    C'est un peu compliqué mais grosso-modo utf8 est laxiste et comprend tous les caractères dans la plage accessible numériquement par utf8 et UTF-8 est plus strict, il n'accepte que les véritables caractères unicodes, sub { return "" } devrait assurer que ces caractères disparaissent, il serait également envisageable de les remplacer par autre chose.

    Ceci assume également que Perl est conscient que les données sont initialement en unicode, s'il les prend pour du binaire, le encode() n'est pas nécessaire et en fait est à supprimer.

    --
    Jedaï

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Encore une fois merci Jedaï.

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

Discussions similaires

  1. [RegEx] Regex pour supprimer tous les caractères répétés
    Par deadc0de dans le forum Langage
    Réponses: 8
    Dernier message: 25/11/2009, 09h25
  2. encodder tous les caractères spéciaux pour un URL
    Par SuperPat dans le forum Général Java
    Réponses: 2
    Dernier message: 30/01/2009, 11h39
  3. Réponses: 13
    Dernier message: 09/01/2008, 02h32
  4. [REGEX] Récupérer tous les caractères non US-ASCII
    Par nonhosonno dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/08/2006, 11h02
  5. Réponses: 4
    Dernier message: 24/08/2005, 19h40

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