tomcat jsp: comment fonctionne l'encodage URL vers java? - Java - Programmation
Marsh Posté le 01-06-2005 à 12:53:05
http://java.sun.com/j2ee/sdk_1.3/t [...] ng.String)
mais il fuadrait vérifier que le client n'a pas de pb aussi.
Marsh Posté le 01-06-2005 à 14:18:37
C'est effectivement ce que j'ai testé:
String encoding = request.getCharacterEncoding();
String charset = request.getParameter("charset" );
mais le résultat est : null
donc je cherche à savoir quel est l'encodage qui est fait, et à quel niveau, pour pouvoir décodé avecle bon charset
Marsh Posté le 01-06-2005 à 14:22:36
le client doit encoder en utf-8 c'est ce qui est recommandé je crois.
Marsh Posté le 01-06-2005 à 14:32:32
Exact nraynaud, c'est sûrement de l'utf-8 puisque qand je fais la conversion:
String sr = new String(v.getBytes("UTF-8" ));
j'obtiens la même chose: "é"
Le problème que je cherche à résoudre est: comment retrouver le "é" d'origine. Et là je ne sais pas.
On passe de "é" à "%C3%A9" (au niveau du navigateur)
puis je pense de "%C3%A9" à X ( au niveau de Tomcat )
et enfin de X à "é" aussi au niveau de Tomcat.
Marsh Posté le 01-06-2005 à 14:39:54
request.setEncoding("UTF-8" );
request.getMachin();
?
Marsh Posté le 01-06-2005 à 15:12:46
J'avais essayé ça aussi, mais sans succès. Je pense que cela vient du fait que je récupère déjà une chaine qui est en UTF-8, elle n'est donc pas modifiée.
Mais bien que je sache que "é" correspond à "%C3%A9", je ne sais pas comment revenir à cette chaîne. Ce qui me permettrait de revenir à ce "é" initial....
Marsh Posté le 01-06-2005 à 16:17:49
Houps, c'est posté plus vite que c'est écrit
Bien je voulais dire que j'ai trouvé comment reproduire le problème:
String url = new String( java.net.URLEncoder.encode("é","UTF-8" ) );
String urldecode = new String(URLDecoder.decode(url,"ISO-8859-1" ));
System.out.println("############# url = "+url +" urldecod = "+urldecode);
Le résultat donne:
############# url = %C3%A9 urldecod = é
C'est donc bien tomcat qui récupère de l'UTF-8 et le décode en ISO-8859-1.
Je suppose qu'il fait se décodage par défaut, et que quelque part il doit y avoir un paramètre à changer dans un fichier de conf quelconque, mais où???
Marsh Posté le 01-06-2005 à 17:00:53
http://jakarta.apache.org/tomcat/t [...] /http.html
Citation : URIEncoding |
Marsh Posté le 01-06-2005 à 17:52:03
Voici un extrait de server.xml :
<Connector acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" enableLookups="false"
maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150"
minSpareThreads="25" port="8080" redirectPort="8443"
URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
________
Visiblement cela ne change rien. J'ai pourtant dans mon jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
A croire qu'il y a un bug dans la version de tomcat que j'utilise
jakarta-tomcat-5.5.9
Marsh Posté le 01-06-2005 à 12:34:00
Bonjour,
J'ai une appli Tomcat qui récupère dans une form un
caractère "é"
celui-ci est transmis comme %C3%A9 (UTF8 => URL?)
et lorsque je le récupère dans mon programme java (par HttpServletRequest )
j'obtiens "é"
Je n'arrive pas à trouver comment le reconvertir en "é" ???
Merci d'avance
Pedro