IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

problème d'encodage Servlet / Tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Points : 53
    Points
    53
    Par défaut problème d'encodage Servlet / Tomcat
    bonjour à tous,

    j'ai développé une appli client / serveur qui réalise une session de login utilisateur.
    Le serveur recoit une commande HTTP get avec Login et pwd en params et renvoit en paramètres les autres paramètres de l'utilisateur (nom, prénom, adresse, tel,...)

    tout fonctionne bien tant que je n'utilise pas de caractères spéciaux...et dans notre belle langue il y en a quelques uns !

    donc en clair, un nom enregistré coté serveur (mongoDB) "tête à toto" est reçu "t�te � toto" sur l'appli client....

    voici quelques extracts de la partie serveur (servlet):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            	response.setContentType("text/html; charset=UTF-8");
                response.addHeader("status","Login Success");   
                response.addHeader("adresse", u.getAdresse());
                response.addHeader("email",u.getEmail());
                response.addHeader("id",u.getId());
                response.addHeader("telephone",u.getTelephone());
                response.addHeader("mobile",u.getMobile());
                response.addHeader("nom",u.getNom());
                response.addHeader("password",u.getPassword());
                response.addHeader("prenom",u.getPrenom());
     
                log.debug("response encoding: "+response.getCharacterEncoding());
                log.debug(response.toString());
    les logs tomcat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    2016-05-18 23:06:51 DEBUG User:83 - User: id:5721ad8019894f2a156e0ae5 nom:Toto prenom:La tête à  email:toto@gmail.com password:tt adresse:Californiatelephone:3856988Mobile:null
    2016-05-18 23:06:51 DEBUG login:88 - response encoding: ISO-8859-1
    donc déjà je vois un truc bizarre...je force la réponse à un encodage en UTF-8 (j'avoue j'ai essayé de tout forcer en ISO-8859-1 aussi mais le résultat est le même) et la commande response.getCharacterEncoding() me renvoit ISO-8859-1....

    après coté config de mon serveur tomcat, j'ai joué avec 1 paramètres qui est de changer le JAVA_OPTS à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JAVA_OPTS=-Djavax.servlet.request.encoding=UTF-8
    là aussi j'ai tenté de passer à ISO-8859-1 mais le résultat est le même....

    coté appli (android) je reçois dans tous les cas le même résultat qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    05-18 23:38:20.448: D/JRE(5394): The response is: 200
    05-18 23:38:20.448: D/JRE(5394): Login success
    05-18 23:38:20.448: D/JRE(5394): Email:toto@gmail.com Pwd:tt Nom:Toto Prenom:La t?te ? Adresse:California Tel:3856988
    et m'affiche sur l'activité "t�te � toto"

    si vous avez ne idée pour me débloquer je suis preneur...

    merci à vous,
    Tiamat.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Points : 53
    Points
    53
    Par défaut
    Juste pour compléter ma question j'ai également modifié mon web.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8"?>

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pour répondre simplement, tu fais fausse route. Les headers http ne sont pas destinés à recevoir ds données, il ne supportent pas d'encodage autre que l'ascii.
    Au passage les header non standards comme les tiens devraient être précédé du préfixe X- pour éviter les collisions.

    Pour résumé, les données ça va dans le content, pas dans les headers.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Points : 53
    Points
    53
    Par défaut
    Merci Tchize_ pour ta réponse.
    je pensais pouvoir utiliser les headers pour passer des infos... bref, j'ai changé le format de la réponse pour échanger un objet JSON et ça fonctionne parfaitement maintenant. voici le code pour aider éventuellement:

    coté servlet:

    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
     
                ObjectOutputStream objOut = new ObjectOutputStream(response.getOutputStream());
     
                JSONObject json = new JSONObject();
                json.put("adresse", u.getAdresse());
                json.put("email",u.getEmail());
                json.put("id",u.getId());
                json.put("telephone",u.getTelephone());
                json.put("mobile",u.getMobile());
                json.put("nom",u.getNom());
                json.put("password",u.getPassword());
                json.put("prenom",u.getPrenom());
     
    	        objOut.writeObject(json);
    	        objOut.flush();
    	        objOut.close();

    coté client:

    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
     
    ObjectInputStream objIn = new ObjectInputStream(con.getInputStream());
     
    				try {
    						net.sf.json.JSONObject json = new net.sf.json.JSONObject();
    						json = (net.sf.json.JSONObject) objIn.readObject();
    						usr.setAdresse((String) json.get("adresse"));
    						usr.setEmail((String) json.get("email"));
    						usr.setMobile((String) json.get("mobile"));
    						usr.setNom((String) json.get("nom"));
    						usr.setPrenom((String) json.get("prenom"));
    						usr.setPwd((String) json.get("password"));
    						usr.setTel((String) json.get("telephone"));
    						usr.setId((String) json.get("id"));
     
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    Tiamat.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'encodage entre C# et servlet tomcat
    Par Treuze dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/02/2011, 12h25
  2. Servlet Tomcat problème chargement librairie
    Par Vlacar dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 05/05/2010, 13h23
  3. [servlet, Tomcat] encodage de nom de fichier uploadé
    Par waeselynck.raphael dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/10/2009, 14h06
  4. Problème d'encodage JSP/Servlet/MySQL
    Par AlexLEDE dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/05/2009, 15h13
  5. problème avec encodage caractère Servlets
    Par dialloma dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/07/2007, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo