Bonjour,

je travaille sur des jsp avec un CMS et j'ai un problème concernant l'encodage d'un paramètre.

En effet un site A utilise une url comme iframe par exemple toto.com?mot=r%E8servation

Moi je travaille sur l'url utilisé pour une iframe.

Ceux qui appellent l'url encode le paramètre mot en hexadécimal et je dois l'utiliser pour l'afficher sur la page.

Dans la jsp, j'utilise le code suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 
<c:set var="mot" value="${param.mot}" />
 
<%
String mot = (String)pageContext.getAttribute("mot");
 
if (mot != null && mot.length() > 0) {
  System.out.println(mot);
  pageContext.setAttribute("mot", org.apache.commons.codec.binary.Hex. 	decodeHex (mot.toCharArray());
}
%>
Le system.out m'affiche r?servation et la classe Hex quand j'utilise decodeHex me provoque une exception de type error odd character.

Voici l'erreur exacte :
org.apache.commons.codec.DecoderException: Odd number of characters.



Pour info, je suis en java 1.5 sur du tomcat.


J'aimerais pouvoir afficher réservation pour l'utiliser dans une recherche à une requête où je pourrais l'encoder en utf-8 mais l'encodage en utf-8 n'est pas le problème.

Je suis complétement perdu

Si je comprends bien, r%E8servation a été décodé en r?servation quand j'utilise le request.getParameter

Est-ce qu'il ne faut pas réencoder en utf-8 le contenu du getParameter pour avoir le %E8 et utiliser le decodeHex?

Merci