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 :
Cette JSP fonctionne donc bien sur 2 configurations mais pas sur la dernière. Elle renvoit toujours les accents bizarrement encodés.
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>
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 :
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 "?"
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");
Merci de nous éclairer...
Partager