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
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
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++
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 ?
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++
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 ?
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...
Oui ce n'est pas dur à faire avec les regexp, en particulier si tu contentes des entité numérique (& #233; à la place de é) :
Mais non seulement cela semble inutile, mais si ta chaine en entrée est incorrect, cela ne marchera pas...
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; }
a++
StringEscapeUtils est ton ami
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Je suis vraiment pas doué... j'arrive à rien. Personne n'a jamais eu à faire ce genre de fonction ?
Wahou!!! Trop cool ! Je viens de remarqué un truc super.
En fait, sur firefox les caractères s'affichent juste mais pas sous IE....
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++
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 :
Apparemment, IE est pas content...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1" />
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
Depuis quand a-t'on besoin de Struts pour implémenter un Filter ?
Modératrice Java - Struts, Servlets/JSP, ...
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 (é 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
Bonjour,
Voilà le résultat :
Il y a qqch que je fais faux mais je vois pas quoi...
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
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
J'ai encore une erreur.
Est-ce que je dois ajouter quelque chose dans le fichier pour utiliser cette fonction ?
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager