Formulaire XMLHttpRequest servlet
Bonjour à tous,
Mon problème depuis deux jours est le suivant :
codage des caractères spéciaux :
Formulaire + XMLHttpRequest + Servlet
Dans le formulaire (HTML) rien de spéciale, prenant l’exemple d’un seul champs de text. « myText »
Concernant XMLHttpRequest (javaScript), rien de spéciale aussi, récupération de l’objet « http_request » et :
Code:
1 2 3 4 5 6 7
|
Var myTextValue = document.elementById (« myTest »).value;
var body = vra1=encodeURI(myTextValue);
http_request.open("POST", url_de_servlet, true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", body.length);
http_request.send(body); |
Coté serveur servlet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html; charset=UTF-8");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
for (Enumeration tEnum = request.getParameterNames();tEnum.hasMoreElements();)
{
String key = (String)tEnum.nextElement();
System.out.println(key + " : ="+request.getParameter(key)+"=");
/*try {
String valeurUTF8 = URLDecoder.decode(request.getParameter(key), "UTF-8");
System.out.println(key + " : ="+ valeurUTF8 +"=");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}*/
} |
Exemple Test :
Input : l'école ça coute des €
Sortie : l'école ça coute des �
quand je remplace encodeURI par escape les accent marche mais pas les autres caractères (€) tEnum est vide.
Les fichiers utilisé sont normalement sauvegardé en « UTF-8 » par Eclipse.
Version de JDK 1.4
Tomcat 5.5