tomcat jsp: comment fonctionne l'encodage URL vers java?

tomcat jsp: comment fonctionne l'encodage URL vers java? - Java - Programmation

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

Reply

Marsh Posté le 01-06-2005 à 12:34:00   

Reply

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.


---------------
trainoo.com, c'est fini
Reply

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

Reply

Marsh Posté le 01-06-2005 à 14:22:36    

le client doit encoder en utf-8 c'est ce qui est recommandé je crois.


---------------
trainoo.com, c'est fini
Reply

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.
 
 

Reply

Marsh Posté le 01-06-2005 à 14:39:54    

request.setEncoding("UTF-8" );
request.getMachin();
 
?


---------------
trainoo.com, c'est fini
Reply

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....

Reply

Marsh Posté le 01-06-2005 à 16:14:13    

Ca

Reply

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ù???

Reply

Marsh Posté le 01-06-2005 à 17:00:53    

http://jakarta.apache.org/tomcat/t [...] /http.html
 
 

Citation :

URIEncoding  
 
This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.  
 
 
useBodyEncodingForURI  
 
This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.  
 


 


Message édité par benou le 01-06-2005 à 17:02:38

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 01-06-2005 à 17:00:53   

Reply

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
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed