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

Servlets/JSP Java Discussion :

Problème encodage-decodage URL avec Java et Javascript


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Problème encodage-decodage URL avec Java et Javascript
    Bonjour à tous!

    Voici mon problème:

    Dans une de mes pages je récupère la valeur du champ d'un formulaire utilisateur que j'utilise ensuite en paramètre d'une URL. Cette URL peut donc contenir des caractères incorrects, et donc générer des problèmes.
    Cette URL est utilisé dans du code Javascript car je l'utilise pour faire une requête AJAX avec un objet XHR. J'ai donc la possibilité d'utiliser la fonction encodeURIComponent(String URL) pour encoder l'URL afin que celle ci soit correcte.
    Le problème est que la page appelée est une page JSP. Je récupère donc les paramètres (et donc la valeur du champ du formulaire utilisateur dont je parle au dessus) avec les méthodes de JSP, et je ne peux donc pas utiliser la fonction decodeURIcomponent(String URL) pour décoder cette URL.

    Quelqu'un aurait il une solution pour récupérer correctement les paramètres?

    Question subsidiaire: Avec quel charset sont encodés les carctères spéciaux avec la fonction encodeURIComponent?

    Merci d'avance de votre aide!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Allez, un chtit up...

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    'jour,

    J'ai pas bien compris pourquoi tu ne récupérais pas la bonne valeur dans ta JSP : si le paramètre est correctement encodé dans l'URL d'appel de la JSP, il te suffit de faire request.getParameter("mon_parametre") pour le récupérer décodé ; il ne devrait pas y avoir de décodage à faire.

    Je ne sais pas comment marche encodeURIComponent dans le détail. Je dirais juste qu'il faut lui faire confiance : j'imagine que si la page est indiquée comme encodée en UTF-8 (soit via l'entête HTTP Content-Type, soit via un <meta http-equiv>), l'encodage se fera en UTF-8. Du coup, il faut que le serveur s'attende à recevoir de l'UTF-8. Il faut donc s'assurer de la cohérence des encodage entre le serveur et les pages.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    D'après http://developer.mozilla.org/en/docs...deURIComponent, c'est de l'encodage UTF-8, donc si ton serveur est configuré avec un autre jeu de caractères qu'UTF-8, tu auras effectivement un pb pour récupérer la valeur du paramètre. Il faut appeler request.setCharacterEncoding("UTF-8") avant de faire ton premier request.getParameter() pour forcer la lecture en UTF-8.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    le request.setEncoding(...) ne fonctionne pas avec tous les serveurs d'application.
    Notamment, avec Tomcat (l'exemple que je connais bien) ... ça dépend de la version !!!
    Les vieux Tomcat (je me souvient plus de la version pivot) utilises le request.setEncoding(...) alors que les récents sont basés sur un paramètre (URIEncoding je crois) dans le server.xml

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci pour vos réponses!
    Effectivement c'est bien de l'UTF-8. Cependant, je ne récupérait pas comme il faut les paramètres avec JSP.
    Mais grace à un collègue j'ai trouvé la solution:
    param = new String(request.getParameter("param").getBytes(), "UTF-8");

    (on force la récupération du paramètre au format UTF-8)

  7. #7
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    C'est une solution, mais c'est assez crade en fait de faire comme ça ... Utiliser le paramétrage correctement est à mon sens la meilleure solution ...

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

Discussions similaires

  1. problème encodage des caractère avec netbeans
    Par space2alk dans le forum NetBeans
    Réponses: 3
    Dernier message: 19/07/2010, 16h34
  2. Problème encodage caractères sépeciaux - XML - Java - Tomcat
    Par commande dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 19/08/2009, 12h31
  3. Problème encodage du sujet avec Mail()
    Par abeh25 dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2009, 10h43
  4. [XSLT] Problème de transformation XSLT avec JAVA
    Par ploxien dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/09/2007, 16h47
  5. [AJAX] encodage-decodage URL avec Java et Javascript
    Par alfreedd dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/06/2007, 13h45

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