Bonjour,

Après plusieurs recherches sur le forum et google concernant l'encodage des caractères en UTF-8, je n'arrive toujours pas à régler mon problème.

Nous sommes 3 à travailler sur un projet. Nous utilisons tous eclipse 3.2 et tomcat 5.5.12 sur les 3 configurations, l'une pose problème avec l'encodage en UTF-8, on a beau chercher mais cela reste sans succès.

J'ai mis en place une jsp des plus simple que voici :
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
34
35
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.net.URLEncoder"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String encoding = request.getCharacterEncoding();
 
if (encoding == null || !encoding.equalsIgnoreCase("UTF-8")) {
  try {
    request.setCharacterEncoding("UTF-8");
  } catch (Exception e) {
  }
}
 
String var = request.getParameter("var") != null ? request.getParameter("var") : "null";
String param = request.getParameter("param") != null ? request.getParameter("param") : "";
param = param.equals("") ? var : param;
%>
 
<form action="test-utf.jsp" method="post">
<input type="text" value="" name="var">
<input type="submit" value="ok">
</form>
 
<p>var = <%= var %></p>
<p>param = <%= param %></p>
<p><a href="test-utf.jsp?param=<%= URLEncoder.encode(param, "UTF-8") %>" title="<%= param %>">lien avec <%= param %></a></p>
</body>
</html>
Cette JSP fonctionne donc bien sur 2 configurations mais pas sur la dernière. Elle renvoit toujours les accents bizarrement encodés.

Nous avons vérifié les configurations d'eclipse qui encodent bien en UTF-8 les fichiers et le serveur.xml de tomcat nous avons bien mis la ligne URIEncoding en UTF-8 dans le connector.

Et on ne parvient toujours pas à faire fonctionner cette JSP...

La seule façon de corriger le problème est de remplacer la ligne qui recupère le paramètre envoyé par le formulaire par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
String var = new String((request.getParameter("var") != null ? request.getParameter("var") : "null").getBytes("ISO-8859-1"), "UTF-8");
Mais le fait de rajouter cette ligne, cela ne fonctionne plus sur les 2 autres configurations, les caractères accentués sont remplacés par des "?"

Merci de nous éclairer...