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

Java EE Discussion :

Encodage caractères spéciaux + EJB


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut Encodage caractères spéciaux + EJB
    Bonsoir tout le monde



    Je développe une application web EJB 3 avec base de donnée Mysql.

    J'ai suivi toutes les étapes nécessaires pour la gestion des caractères spéciaux (je pense :p):

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

    Création de la classe EncodingFilter
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.negsyst.encoding;
    import java.io.IOException;
     
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    /**
     *
     * @author FFOKOU
     */
    public class EncodeFilter implements Filter {
     
        @SuppressWarnings("unused")
        private FilterConfig filterConfig = null;
     
        @Override
        public void destroy() {
            this.filterConfig = null;
        }
     
        @Override
        public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // Setting the character set for the request
            request.setCharacterEncoding("UTF-8");
     
            // pass the request on
            chain.doFilter(request, response);
     
            // Setting the character set for the response
            response.setContentType("text/html; charset=UTF-8");
        }
     
        @Override
        public void init(final FilterConfig filterConfig) throws ServletException {
            this.filterConfig = filterConfig;
        }
    }

    Déclaration de filter dans le fichier web.xml

    Côté base de donnée Mysql le Charset est bien UTF8 Collation "utf8_general_ci"

    Jusque là tout va bien. Les caractères spéciaux sont bien gérés et enregistrés dans ma base de données.



    Les choses dégénèrent quand je fait un "insert" directement à partir du tier "EJB" et non plus à partir de mes interfaces dans le "WAR".

    Les caractères spéciaux sont alors transformé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ééééé ((ç êaaa" devient "ééééé ((ç êaaa"

    Comment appliquer le "filter" côté serveur?



    Merci d'avance, bonne soirée

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    Regarde un peu la méthode public static String replaceSpecialCharacters(String original) {} disponible ici, pour voir s'il n'y a pas moyen de l'adapter à tes besoins.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    Merci déjà pour ta réponse.

    Mais tjrs pas bon. J'ai l'impression que le pb d'encodage survient lors de la persistance

    J'ai même appliqué explicitement le charset UTF-8 avant d'affecter ma valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .
    .
    System.out.println("CONTENU INSERT " + new String(content.getBytes(), Charset.forName("UTF-8")));
    objet.setMsgdata(new String(content.getBytes(), Charset.forName("UTF-8")));
    ObjetFacade.create(sendSms);
    .
    .
    L'affichage produit la bonne valeur; les caractères spéciaux sont correctement restitués. Cependant, quand le vérifie ma BD, lesdits caractères n'ont pas été correctement persistés. Ils sont transformés. D'où ma question: est-ce qu'il ya moyen d'appliquer ce remplacement lors de la persistance ou alors un autre moyen de gérer?

    Merci

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    Petit complément

    Sous Windows tous se passe bien. Les caractères sont bien traités.

    Cependant, le PB survient en environnement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Par défaut
    Bonjour,

    As tu configuré ton serveur web?

    Exemple si tu utilise glassfish, tu devras ajouter dans ton fichier glassfish-web.xml:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <parameter-encoding default-charset="UTF-8"/>
    </glassfish-web-app>

    Avant dernière ligne.

    Bon courage.

Discussions similaires

  1. [MySQL] Encodage caractères spéciaux après import csv
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/10/2012, 15h27
  2. Problème encodage caractères spéciaux
    Par tomy29 dans le forum Struts 1
    Réponses: 9
    Dernier message: 08/01/2012, 11h49
  3. Problème encodage caractéres spéciaux MYSQL avec juste &
    Par EDrequest dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/05/2010, 10h06
  4. Encodage caractères spéciaux pour XML
    Par danathane dans le forum Modules
    Réponses: 1
    Dernier message: 24/02/2010, 11h10
  5. Probléme encodage caractéres spéciaux MYSQL
    Par FoxLeRenard dans le forum Installation
    Réponses: 1
    Dernier message: 20/02/2006, 12h10

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