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 :
Coté serveur servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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 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
Partager