Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1324 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Décodage d'une String en Latin1

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Décodage d'une String en Latin1

n°1412142
Giz
Posté le 24-07-2006 à 11:22:13  profilanswer
 

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 ?

mood
Publicité
Posté le 24-07-2006 à 11:22:13  profilanswer
 

n°1412176
Giz
Posté le 24-07-2006 à 11:46:51  profilanswer
 

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

n°1412184
brisssou
8-/
Posté le 24-07-2006 à 11:51:10  profilanswer
 

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
n°1412203
Giz
Posté le 24-07-2006 à 12:01:29  profilanswer
 

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

n°1412241
the real m​oins moins
Posté le 24-07-2006 à 13:07:04  profilanswer
 

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 ?
n°1412275
Giz
Posté le 24-07-2006 à 13:46:50  profilanswer
 

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

n°1412278
the real m​oins moins
Posté le 24-07-2006 à 13:49:36  profilanswer
 

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 ?
n°1412292
Giz
Posté le 24-07-2006 à 14:05:32  profilanswer
 

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:

n°1412347
Giz
Posté le 24-07-2006 à 15:12:51  profilanswer
 

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
n°1412357
benou
Posté le 24-07-2006 à 15:18:42  profilanswer
 

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

mood
Publicité
Posté le 24-07-2006 à 15:18:42  profilanswer
 

n°1412383
Giz
Posté le 24-07-2006 à 15:43:32  profilanswer
 

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.

n°1412416
benou
Posté le 24-07-2006 à 16:12:00  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Décodage d'une String en Latin1

 

Sujets relatifs
[.NET/C#] Data Format String, Besoin d'un coup de poucetaille d'un string
[FOP/PDF] comment extraire le PDF en tant que String, pour copier ?TStringGrid, Boucle... String ? O.o
décodage de pascal pour un neophite[wxWidgets + VC++6] ambiguous opetaror & string unicode
comment récuperer des dates à l'intérieur d'une stringPassage d'un string vers un int.... ou comment savoir si c possible
division de string[resolu][Resolu] string.lenght qui marche une fois sur deux
Plus de sujets relatifs à : Décodage d'une String en Latin1


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR