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

Servlets/JSP Java Discussion :

remplacer les caractères spéciaux


Sujet :

Servlets/JSP Java

  1. #1
    Invité
    Invité(e)
    Par défaut remplacer les caractères spéciaux
    Bonjour,

    Je suis nouveau en jsp et j'ai une page qui me retourne des choses de ce genre � à la place des caractères spéciaux.

    Exsite t'il une fonction comme htmlentities en php qui remplace les caractères tout seul ?

    Merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    De quels caractères spéciaux tu parles ?
    Il me semble que "�" est le caractère de substitution utilisé lorsque le code n'existe pas dans l'encodage spécifié..

    Ce ne serait pas un problème d'encodage ?

    a++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui c'est un problème d'encodage mais je ne peux pas changer l'encodage de la page. Par contre, je peux remplacé les caractères spéciaux par leur équivalent en code html. Par exemple é -> é

    N'y-t'il pas de fonction qui fasse cela ?

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Par curiosité : quel est l'encodage de la page ?


    Pour la conversion en entité HTML il n'y a rien de tel en standard, mais il existe plusieurs codes faisant cela...


    a++

  5. #5
    Invité
    Invité(e)
    Par défaut
    Sauf erreur, la page est encodée en iso-8859-1 alors qu'elle devrait être en utf-8

    Il faut que je créer une fonction c'est ça ?

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par babastutz Voir le message
    Sauf erreur, la page est encodée en iso-8859-1 alors qu'elle devrait être en utf-8
    L'iso-8859-1 comporte bien le caractère "é" et tu n'as donc pas besoin de le convertir...

    D'où vient ta chaine de caractères ? Il y a de forte chance que le problème viennent de la lecture de cette chaine...

    Citation Envoyé par babastutz Voir le message
    Il faut que je créer une fonction c'est ça ?
    Oui ce n'est pas dur à faire avec les regexp, en particulier si tu contentes des entité numérique (& #233; à la place de é) :
    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
    	public static String htmlEntities(final String original) {
    		// On recherche tous les caractères non-ASCII
    		final Matcher m = Pattern.compile("[^\\p{ASCII}]").matcher(original);
    		if (m.find()) {
    			// On crée un buffer qui contiendra la nouvelle chaine
    			final StringBuffer sb = new StringBuffer(original.length());
    			do {
    				// On récupère le caractère :
    				int c = m.group().charAt(0);
    				// On le transforme en entité HTML numérique :
    				String rempl = String.format("&#%d;", c);
    				// Et on effectue le remplacement :
    				m.appendReplacement(sb, rempl);
    			} while (m.find());
    			// On colle la fin de la chaine :
    			m.appendTail(sb);
    			// Et on retourne le résultat :
    			return sb.toString();
    		}
    		// Sinon (aucun char non-ascii)
    		// on retourne la chaine recu :
    		return original;
    	}
    Mais non seulement cela semble inutile, mais si ta chaine en entrée est incorrect, cela ne marchera pas...

    a++

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par babastutz Voir le message
    Exsite t'il une fonction comme htmlentities en php qui remplace les caractères tout seul ?
    StringEscapeUtils est ton ami
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je suis vraiment pas doué... j'arrive à rien. Personne n'a jamais eu à faire ce genre de fonction ?

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est à dire ? Quel est le problème ????



    Sinon tu n'as pas répondu à cela :
    Citation Envoyé par adiGuba Voir le message
    D'où vient ta chaine de caractères ?
    Je reste persuadé que le problème vient de la chaine de caractère qui est malformé !

    a++

  10. #10
    Invité
    Invité(e)
    Par défaut
    Wahou!!! Trop cool ! Je viens de remarqué un truc super.

    En fait, sur firefox les caractères s'affichent juste mais pas sous IE....

  11. #11
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Dans ce cas c'est la détection de l'encodage qui foire.

    Est-ce que tu spécifies bien l'encodage dans ta page (entete/meta/etc.)

    Sinon pourrais tu fournir une page avec le stricte minimum avec ce problème...

    a++

  12. #12
    Invité
    Invité(e)
    Par défaut
    le truc bizarre de ce que je suis en train de faire, c'est que j'ai un site en utf-8. Il y a une page ou je dois utiliser une iframe pour utiliser l'application sur un autre site qui lui est en iso-8859-1.

    Dans la page de l'autre site j'ai un beau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1" />
    Apparemment, IE est pas content...

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    2 solutions :

    Soit tu utilise Struts en tu donne la priorité à un Filter sur toute URL. Dans ce filtre tu donne le bon encodage à l'objet HttpServletResponse

    Soit tu utilise les taglibs de Struts : <bean:message [...] />
    avec attribut key : le nom de la clé comportant le texte dans ton ressources bundle
    et avec filter : true or false pour décider ou non d'encoder les html entities

    Si tu bug avec ces explications utilise la doc online de struts (apache fundation), c'est beau c'est riche, c'est propre.

    Enjoy baby

  14. #14
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Depuis quand a-t'on besoin de Struts pour implémenter un Filter ?
    Modératrice Java - Struts, Servlets/JSP, ...

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chat hotplug Voir le message
    2 solutions :

    Soit tu utilise Struts en tu donne la priorité à un Filter sur toute URL. Dans ce filtre tu donne le bon encodage à l'objet HttpServletResponse

    Soit tu utilise les taglibs de Struts : <bean:message [...] />
    avec attribut key : le nom de la clé comportant le texte dans ton ressources bundle
    et avec filter : true or false pour décider ou non d'encoder les html entities

    Si tu bug avec ces explications utilise la doc online de struts (apache fundation), c'est beau c'est riche, c'est propre.

    Enjoy baby
    Comme je l'ai dit dans mon premier message, je suis nouveau dans jsp, et là, j'ai rien compris...

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tout le monde débute un jour

    Je reviens (un peu) à la charge... tu cherches un outil qui génère les entités html (&eacute; etc...) et je t'ai indiqué la classe StringEscapeUtils avec en particulier la méthode escapeHtml(String).
    L'as-tu testé ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Tout le monde débute un jour

    Je reviens (un peu) à la charge... tu cherches un outil qui génère les entités html (&eacute; etc...) et je t'ai indiqué la classe StringEscapeUtils avec en particulier la méthode escapeHtml(String).
    L'as-tu testé ?
    Bonjour,

    Voilà le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    500 Servlet Exception
    /liste.jsp:82: cannot find symbol
    symbol  : method escapeHtml(java.lang.String)
    location: class _jsp._liste__jsp
          out.print(( escapeHtml(df.format(ent.getNo())) ));
                      ^
    Note: D:\AFV\ventebois\WEB-INF\work\_jsp\_liste__jsp.java uses unchecked
    or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    Il y a qqch que je fais faux mais je vois pas quoi...

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    On l'utilise comme ceci (c'est une méthode static)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    out.println(StringEscapeUtils.escapeHtml("....."));
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    On l'utilise comme ceci (c'est une méthode static)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    out.println(StringEscapeUtils.escapeHtml("....."));
    J'ai encore une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    500 Servlet Exception
    /liste.jsp:83: cannot find symbol
    symbol  : variable StringEscapeUtils
    location: class _jsp._liste__jsp
           out.println(StringEscapeUtils.escapeHtml(ent.getTitre())); 
                       ^
    Note: D:\AFV\ventebois\WEB-INF\work\_jsp\_liste__jsp.java uses unchecked
    or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    Est-ce que je dois ajouter quelque chose dans le fichier pour utiliser cette fonction ?

  20. #20
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu télécharges commons.lang ici
    Tu intègres le jar à ton application
    Dans la page JSP, tu rajoutes une clause <%@ page import="org.apache.commons.lang.StringEscapeUtils"/>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Remplacer les caractères spéciaux dans xml
    Par panda31 dans le forum Développement de jobs
    Réponses: 14
    Dernier message: 19/10/2011, 09h53
  2. Remplacer les caractères spéciaux dans un prénom(Regex)
    Par sajodia dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 17/05/2011, 17h19
  3. remplacer les caractères spéciaux
    Par DeveloppeurWeb dans le forum VB.NET
    Réponses: 9
    Dernier message: 24/02/2011, 11h51
  4. remplacer les caractéres spéciaux
    Par vanesa dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 13/04/2009, 15h46
  5. Réponses: 3
    Dernier message: 18/02/2008, 14h05

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