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 :

[Servlet] Apostrophes, guillemets et autres caractères


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut [Servlet] Apostrophes, guillemets et autres caractères
    J'ai de gros problèmes avec les guillemets, les apostrophes, et les caractères spéciaux français. Ma page est en ISO-8859-1 et je ne peux pas la changer.
    Je n'arrive pas à gérer les codes du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.write("<input type='hidden' name='toto' value='"+Texte+"'/>");
    Mon problème se pose si Texte contient des quotes simples.
    Et pour les caractères bizarres (genre le oe mélé ou le symbole EUR), il me met des ?

    Quelqu'un peu m'aider ?

    @+
    Rémi

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par srvremi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.write("<input type='hidden' name='toto' value='"+Texte+"'/>");
    Mon problème se pose si Texte contient des quotes simples.
    C'est un problème dans la page html générée. Il suffit d'echapper les cotes dans ton Texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    out.write("<input type='hidden' name='toto' value='"+Texte.replace("'","\'")+"'/>");
    Citation Envoyé par srvremi
    Et pour les caractères bizarres (genre le oe mélé ou le symbole EUR), il me met des ?
    Citation Envoyé par wikipedia sur ISO_8859-15
    Il peut être considéré comme une mise à jour de la norme ISO 8859-1 : il est identique, à l'exception de huit caractères. Il ajoute le caractère de l'euro (€) et les caractères Œ, œ et Ÿ qui manquaient pour l'écriture du français.
    Les caractères dont tu parles n'existent pas en ISO-8859-1, donc pas étonnant qu'il ne te les affiche pas.

  3. #3
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    J'ai essayé cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.write("<input type='hidden' name='toto' value='"+Texte.replace("'","\'")+"'/>");
    Mais elle me pond ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type='hidden' name='toto' value='jojo l\'asticot'/>
    ce qui me donne comme value une fois récupérée : "jojo l\"

    @+
    Rémi

  4. #4
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    J'ai aussi essayé de passer en iso-8859-15 sur ma version de test, le problème reste le même. Je n'y comprends plus rien !

    EDIT : en fait j'ai vérifié, j'ai forcé l'utilisation d'un symbole € dans le texte, il fonctionne en iso-8859-15, mais si je récupère le texte d'un formulaire, là il n'y est plus, le symbole n'est pas reconnu. Comment puis-je modifier le code pour que ça marche ?

    @+
    Rémi

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 29
    Par défaut
    Bonjour,

    Quand tu récupère le texte d'un formulaire, il faut que tu encode toi même les caractères que tu reçois.

    Par exemple tu crée un Filtre de ce genre :

    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
    19
    20
    21
    22
    23
    24
     
    public class UTF8EncodingFilter implements javax.servlet.Filter {
     
        public void init(FilterConfig filterConfig) throws ServletException {
            // This would be a good place to collect a parameterized
            // default encoding type. For brevity, we're going to
            // use a hard-coded value in this example.
        }
     
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException {
     
            // Specify the encoding to assume for the request so
            // the parameters can be properly decoded/.                
            //request.setCharacterEncoding("UTF-8");
            request.setCharacterEncoding("ISO-8859-15");
            filterChain.doFilter(request, response);
        }
     
        public void destroy() {
            // no-op
        }
     
    }

    Et quand tu affiche les pages, il faut bien que tu précise au navigateur que tes pages sont en ISO-8859-15.
    Tu peux pour ça rajouter les balises suivantes pour tes JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
    (remplace UTF-8 par ISO-8859-15)

    Avec ça tout devrait rentrer dans l'ordre.

    Jérôme

    PS : Si tu stocke tes valeurs dans une base de données, assure toi que ta base soit au bon encodage.

  6. #6
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    Génial magnifique super merveilleux !!!!!!!!!!!!!
    Merci beaucoup il ne me manquait plus que ce truc de filtre. J'avais déjà vérifié que la BD était au bon encodage, il ne me restait plus que ça.

    Merci !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    @+
    Rémi

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

Discussions similaires

  1. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  2. Perte des accents et autres caractères spéciaux.
    Par pacific dans le forum Coldfusion
    Réponses: 1
    Dernier message: 19/07/2007, 01h17
  3. servlet qui appelle un autre
    Par pazaroti dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/05/2007, 16h01
  4. Remplacer Saut de ligne par un autre caractère
    Par kurtalis dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 18/05/2007, 17h40
  5. servlet qui appelle une autre
    Par kam81 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 06/11/2006, 16h14

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