Bonjour,

J'ai un problème lors du passage des paramètres à un JSP (appel via javascript -XMLHttpRequest-) les accents sont remplacés par un point d'interrogation.

Remarques :
1) Tout est défini en UTF-8 dans mon application :
*Dans chaque JSP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8" %>
	<%
                request.setCharacterEncoding("UTF-8");
                response.setCharacterEncoding("UTF-8");
        %>
*UTF-8 est définit dans Server.xml et Web.xml

2) Je fais bien un "escape" en javascript sur les parametres avant d'envoyer l'URL.

3) Dans le jsp de reception, si j'affiche la queryString :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
request.getQueryString();
il semble que l'url soit bien encodée (les espaces sont remplacés par %20, les accents par %E9, etc.)
Exemple : si je passe la valeur "Comptabilité", la QueryString renvoyée est "Service=Comptabilit%E9"

4) Quand je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
request.getParameter("Service");
la page me retourne "Comptabilit?".
Par contre, si la valeur du paramètre "Service" est "service communication", request.getParameter("Service") me retourne
bien "service communication" (donc les %20 sont bien décodés).

5) J'ai essayé de faire un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
URLDecoder.decode(request.getParameter("Service"),"UTF-8");
Ca me retourne "Comptabilit?"

Voici le Code javascript qui fait appel à à la JSP :
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
24
25
26
27
28
29
30
31
32
33
 
function Afficher() 
{ 
	var Service = document.getElementById("Cb_Services");
	var SearchBy = document.getElementById("Cb_SearchBy");
	var SearchField = document.getElementById("SearchField");
	if(SearchBy.value!='Aucun')
	{
		if(SearchField.value.length==0)
		{
			//Si recherche mais que champ vide ->ne sert à rien d'afficher quelque chose
			alert('Champ vide');
			return;
		}
	}
var OAjax; 
  if (window.XMLHttpRequest) OAjax = new XMLHttpRequest(); 
  else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP'); 
 
  OAjax.open("POST",'ajax_Fiches.jsp?Service='+escape(Service.value)+'&SearchBy='+escape(SearchBy.value)+'&SearchField='+escape(SearchField.value),true); 
  OAjax.onreadystatechange = function() 
  { 
      if (OAjax.readyState == 4 && OAjax.status==200) 
      { 
          if (document.getElementById) 
          {    
                    document.getElementById('content').innerHTML=OAjax.responseText;
          }      
      } 
  } 
  OAjax.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
  OAjax.send(null);	
}
EDIT
En fouillant le net, j'ai peut être trouvé un début d'explication :
il semblerait que pour le "é" :
- %E9 est le code ISO-8859-1
- le code UTF-8 est %C3%A9

Or, ici le code récupéré dans la jsp est %E9. Serait-ce la méthode "Open" dans le code javascript qui envoit en ISO-8859-1 au lieu de UTF-8 ?
Dans ce cas, comment changer ?

Quelqu'un aurait-il une idée ? J'avoue que je suis bloqué là...

Grand merci d'avance.

Lars