Décodage d'une String en Latin1

Décodage d'une String en Latin1 - Java - Programmation

Marsh Posté le 24-07-2006 à 11:22:13    

Dans une url, je récupère une String codée en UTF8 (les 'é' sont tout zarbi). Quand je la réceptionne dans mon objet request, j'aimerais la décoder en ISO-Latin1. Quelles sont les classes Java permettant de faire cela ?

Reply

Marsh Posté le 24-07-2006 à 11:22:13   

Reply

Marsh Posté le 24-07-2006 à 11:46:51    

Je viens d'essayer un truc du style :
 
searchBean.getCountry().setName(URLDecoder.decode(searchBean.getCountry().getName(),"ISO-8859-1" ));
searchBean.getCountry().setName(URLDecoder.decode(searchBean.getCountry().getName(),"UTF-8" ));
 
Mais quedalle, ca change rien, mais String est toujours amochée :/.

Reply

Marsh Posté le 24-07-2006 à 11:51:10    

comment tu passes ta chaine de recherche dans ton URL ? c'set étrange que les accents soient foirés.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 24-07-2006 à 12:01:29    

http://localhost:8080/fermette/mod [...] aine&city=
 
En fait, c'est la String "France Métroplitaine", l'accent a été encodé dans l'url (en UTF-8 je pense). J'ai même essaié un request.setCharacterEncoding("ISO-8859-1" ); mais kedalle, le caractère zarbi est toujours présent :/.

Reply

Marsh Posté le 24-07-2006 à 13:07:04    

faudra un jour que vous compreniez que le "caractere zarbi" c'est juste parce que vous imprimez ça dans une console qu'est pas prête pour ça hein. 100 balles qu'avec un debugger tu verras que ton caractere n'est pas "zarbi".


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 24-07-2006 à 13:46:50    

the real moins moins a écrit :

faudra un jour que vous compreniez que le "caractere zarbi" c'est juste parce que vous imprimez ça dans une console qu'est pas prête pour ça hein. 100 balles qu'avec un debugger tu verras que ton caractere n'est pas "zarbi".


 
Testé ! et il est zarbi !  :o

Reply

Marsh Posté le 24-07-2006 à 13:49:36    

apres avoir fait ton decoding bidon ptet ? [:marc]
(edit: et quel débugger? tu t'y es pris comment?)


Message édité par the real moins moins le 24-07-2006 à 13:49:54

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 24-07-2006 à 14:05:32    

ben j'utilise eclipse debugger. J'ai toujours ce caractère zarbi. Toi qui a l'air de t'y connaître, t'as une solution peut-être :heink:

Reply

Marsh Posté le 24-07-2006 à 15:12:51    

J'ai essaié d'agir au niveau de Tomcat :
 
         

<filter>
  <filter-name>Spring character encoding filter</filter-name>
  <filter-class>com.ogmyos.module.ebiz.util.Latin1Filter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>ISO-8859-1</param-value>
  </init-param>
  <init-param>
   <param-name>forceEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>


 

Code :
  1. public class Latin1Filter implements Filter
  2. {
  3.   private FilterConfig filterConfig;
  4.   private String encoding;
  5.  
  6.   public void doFilter(ServletRequest request,
  7.     ServletResponse response, FilterChain chain) throws
  8.     IOException, ServletException {
  9.     String encoding = selectEncoding(request);
  10.     if (encoding != null)
  11.        request.setCharacterEncoding(encoding);
  12.     chain.doFilter(request, response);
  13.  }
  14.  public void init(FilterConfig filterConfig) throws
  15.     ServletException {
  16.     this.filterConfig = filterConfig;
  17.     this.encoding = filterConfig.getInitParameter("encoding" );
  18.  }
  19.  protected String selectEncoding(ServletRequest request) {
  20.   System.out.println(request.getCharacterEncoding());
  21.     return "ISO-8859-1";
  22.  }
  23.  public void destroy() {
  24.   // TODO Auto-generated method stub
  25.  }
  26. }


 
Mais kedalle, je recois toujours le caractère zarbi dans la request.  :cry:
 
EDIT : en mettant un point d'arrêt dans une fonction du filtre, le debugger ne s'arrete pas et le system.out.println n'affiche rien ... classe non executée ?  :sweat:

Message cité 1 fois
Message édité par Giz le 24-07-2006 à 15:14:07
Reply

Marsh Posté le 24-07-2006 à 15:18:42    

Giz a écrit :

J'ai essaié d'agir au niveau de Tomcat :


c'est pas comme ça que ca se fait :  
 
 
ca se configure dans le connecteur http (server.xml) : met URIEncoding à UTF-8
 
http://tomcat.apache.org/tomcat-5. [...] /http.html

Reply

Marsh Posté le 24-07-2006 à 15:18:42   

Reply

Marsh Posté le 24-07-2006 à 15:43:32    

Merci Benou, ta solution est certainement plus propre bien que la mienne marchait quand même. En fait, en mettant UTF-8 le 'é' change avec un carré, mais en ISO machin -1 , le é est mal encodé (comme j'ai cité) ... c'est quoi l'encodage à utiliser pour récupérer mon 'é' ?
Sinon je change, je passe par les id de ma table quitte à requêter ma bdd pour recupérer le bon pays.  [:spamafote] je laisse tomber l'affaire.

Reply

Marsh Posté le 24-07-2006 à 16:12:00    

le tout c'est de savoir quel encoding est utilisé pour l'url par le browser web. Et ça, c'est à la discrétion du browser : la spec HTTP est floux là dessus, mais "conseille" l'UTF-8 pour une meilleur compatibilité. Je t'avoue que je ne sais pas quels browsers respectent cette préconisation et dans quel cas ...
 
Mais la meilleur façon de faire est de passer ces données "accentuées" dans des requêtes de type post. Même là c'est pas clairement spécifié la façon dont ça doit marcher, mais on est arrivé à des "règles de facto" qui permettent de s'en sortir.
Pour te faire une bonne idée de ce problème, je conseille la lecture de ce très bon article que je viens de trouver :  http://ppewww.ph.gla.ac.uk/~flavel [...] -i18n.html

Reply

Sujets relatifs:

Leave a Replay

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