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 Java Discussion :

replaceAll et accents


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 34
    Par défaut replaceAll et accents
    Bonjour,

    je suis en train de galérer après maintes et maintes recherches...

    C'est tout simple, je veux juste remplacer tous les accents d'une chaine String par l'équivalent sans accent.

    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
     
    		String source	= "Déjà du maïs";
     
    		source = source.replaceAll("[èéêë]","e");
    		source = source.replaceAll("[àáâãäå]","a");
    		source = source.replaceAll("[òóôõöø]","o");
    		source = source.replaceAll("[ìíîï]","i");
    		source = source.replaceAll("[ùúûü]","u");
    		source = source.replaceAll("[ÿ]","y");
    		source = source.replaceAll("[ç]","c");
    		source = source.replaceAll("[Ç]","C");
    		source = source.replaceAll("[°]","-");
    		source = source.replaceAll("[Ñ]","N");
    		source = source.replaceAll("[ÙÚÛÜ]","U");
    		source = source.replaceAll("[ÌÍÎÏ]","I");
    		source = source.replaceAll("[ÈÉÊË]","E");
    		source = source.replaceAll("[ÒÓÔÕÖØ]","O");
    		source = source.replaceAll("[ÀÁÂÃÄÅ]","A");
    Voici le code que j'utilise, je tiens à précisé que je suis passé par plusieurs solutions différentes et toutes me retournent le même résultat ou presque.

    Donc le code ci-dessus, retourne le résultat suivant : "Deje du maes"

    A priori il prend tous les caractères accentués et les remplace par le 1er replaceAll...

    Je suis en java 1.5

    Quand je test le code dans un scrapbook (permet de tester des bouts de code), ceci marche parfaitement.
    Est-ce un problème d'environnement de développement ??

    Là je sèche.
    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Je ne sais pas pour ton problème mais en tout cas, ceci t'aidera peut etre FAQ ici
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 34
    Par défaut
    Merci pour ta réponse mais j'ai déjà essayé ce code qui fonctionne parfaitement en scrapbook mais dans sur le serveur.

    Je viens de me rendre compte d'une chose qui pourra surement faire avancer les choses.

    En mode debug je lis la variable avant de faire le traitement des caractères et chose bizarre, voici ce que ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = "Déjà du maïs";
    Mon point d'arrêt se situe de suite après et à la lecture j'ai:

    "D�j� du ma�s"

    Du coup pour le traitement les caractères accentués sont les même partout. C'est donc un début d'explication.

    Mais pourquoi ces points d'interrogation ??

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par cefabien Voir le message
    Quand je test le code dans un scrapbook (permet de tester des bouts de code), ceci marche parfaitement.
    Est-ce un problème d'environnement de développement ??
    Ton bout de code fonctionne (attention toutefois aux multiples replaceAll() qui pourrait être couteux).


    Donc ton problème vient d'ailleurs... mais difficile de t'aider sans plus d'info...



    [EDIT] Je viens de voir ton second post. C'est un problème d'encodage.
    D'où vient ta chaine de caractère ?


    a++

  5. #5
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 34
    Par défaut
    Je viens de me rendre compte qu'il fallait que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = new String("Déjà du maïs");
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = "Déjà du maïs";
    Là pour l'instant le texte est codé en dur, mais au final ce sera un nom et prénom qui viendront de la lecture d'un certificat.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cefabien Voir le message
    Je viens de me rendre compte qu'il fallait que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = new String("Déjà du maïs");
    Tu as vraiment un résultat différent en faisant cela ??????

    Le new String() est totalement inutile...

    Citation Envoyé par cefabien Voir le message
    Là pour l'instant le texte est codé en dur, mais au final ce sera un nom et prénom qui viendront de la lecture d'un certificat.
    Il faudra préciser correctement l'encodage lors de la lecture de ce certificat...


    a++

  7. #7
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 34
    Par défaut
    Eh non, ben finalement, c'était peut être un effet de bord car comme tu dis, ça ne change rien...

    Mais bon, c'est la 1ère fois qu'une chaîne avec accents me retourne cette chaîne avec des points d'interrogation sans avoir fait quoi que ce soit sur cette chaîne...

    Pour l'instant pour tester la validité du code, je ne renseigne pas ma variable avec les infos du certificat mais directement en dur dans mon code.

  8. #8
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 34
    Par défaut
    Me revoilà,

    bon le souci est réglé en modifiant l'encodage dans eclipse.
    J'étais en CPL1512 et j'ai mis en UTF-8.

    Dans windows/préférences/général/Workspace
    puis dans web/css files
    puis dans web/html files
    puis dans web/jsp files

    et maintenant c'est ok.

    Merci pour votre aide !

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par cefabien Voir le message
    Je viens de me rendre compte qu'il fallait que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = new String("Déjà du maïs");
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaine = "Déjà du maïs";
    Pas le moins du monde, et ça m'étonnerait que ça arrange quoi que ce soit.

    Citation Envoyé par cefabien Voir le message
    Là pour l'instant le texte est codé en dur, mais au final ce sera un nom et prénom qui viendront de la lecture d'un certificat.
    Il va déjà falloir régler le problème en dur. C'est effectivement un problème d'encodage.
    Par exemple, tes fichiers .java sont encodés en iso-8859-1, mais compilés comme s'ils étaient en utf-8.
    Ce problème ne se pose pas sur un scrapbook, ni, en principe, en utilisant un EDI comme Eclipse ou Netbeans.

    Il faut vérifier en quel encodage tu enregistres tes fichiers .java. Puis il faut indiquer cet encodage au compilateur javac, avec le paramètre -encoding iso_8859_1, par exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33
  2. Accents
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 26/02/2003, 16h17
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59
  4. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 09h32
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

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