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++
Partager