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

JDBC Java Discussion :

MySql, java, String, probleme d'accent.


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut MySql, java, String, probleme d'accent.
    Bonjour a tous,

    tout est dans le titre, j'utilise mysql, avec java enfin dans une servlet pour etre precis mais meme dans une classe tout court ca ne fonctionne pas ...
    j'utilise mysql connector 5.0.5 ...

    Tout mes accents sont remplacé par des caractère sans aucun sens ...

    le "é" devient "," le "a" devient "..."

    je vosu joint un exemple de code et son resultat

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.CharsetDecoder;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import mainPackage.article.ArticleModel;
    /*
     * Essai.java
     *
     * Created on 26 mai 2007, 16:37
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    /**
     *
     * @author ACER
     */
    public class Essai {
        private String url;
        private Connection c;
        CharsetDecoder decodeur ;
        /** Creates a new instance of Essai */
        public Essai() {
     
            try{
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://127.0.0.1/projet";
                c =   DriverManager.getConnection(url, "root", "sangoku");
                //DriverManager.getConnection("jdbc:mysql://127.0.0.1/projet"+"?useUnicode=true&characterEncoding=cp1250", "root", "sangoku");
            }catch (Exception e) {
     
            }
     
        }
     
        public void get() throws UnsupportedEncodingException{
            ArticleModel m = null ;
            String myString = "";
            try {
     
                // On recupere le numero de ce client
                Statement s = c.createStatement();
                ResultSet rs = s.executeQuery("select * from article ");
     
     
                while ( rs.next() ) {
                    System.out.println(rs.getString("texte"));
                }
     
            } catch (SQLException ex) {
     
            }
     
        }
     
        public static void main(String [] args) throws UnsupportedEncodingException{
            Essai e = new Essai() ;
            e.get();
        }
     
     
     
     
     
     
    }

    et le resultat que je vous laisse admirer ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    L'organisateur s'engage … payer le producteur … l'issue de la repr‚sentation, ou en fin de mois pour les initiations de longue dur‚e, soit en espŠce, s
    Sympathique n'est ce pas ?

    j'ai passer l'apres midi a chercher sur les forum, je ne trouve rien ...
    s'il vous plaie si vosu avez des idées elle seront les bienvenues ...

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Problème évident de charset...

    Quel est le charset utilisé par ta base mysql (UTF-8, ISO-8859-1...?)

    Une fois que tu l'as il suffit d'indiquer dans ta JSP (à son début) l'encodage fixé pour la page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
    Si le charset de ta base est UTF-8
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    je l'ai mis en UTF-8 mais la pour le moment le probleme ne semble pas venir de mes page jsp, puisque regarde dans l'exemple je fais juste un System.out.pritln() d'une valeur de la table

    je susi un peu perdu, tu pourrais m'expliquer ?

    merci de ta reponse.

  4. #4
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    ajoute ça dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.executeQuery("SET NAMES cp850 ");
    comme toute première instruction.

    Normalement les lettres accentuées devraient bien s'afficher.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    a vrai dire maintenant j'ai des point d'interrogation partout à la place de mes accents ...

    c'est bizarre bizarre ....

    merci de vos reponses

  6. #6
    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
    Ce qu'il faut savoir c'est :
    - Quel est l'encoding de ta base ?
    - Quel est l'encoding de la sortie que tu utilises (console, jsp etc ...)

    Après il faut que ce soit cohérent, et qu'il n'y ait pas de conversion "implicite" ....

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Alors l'encoding de la base c'est latin1 puisque avec UTF8 j'arriove rien a inserer
    ma sortie il y en a deux, une console ( celle de netbeans )
    et une page JSP qui a aps d'encoding définit

    mais pour le moment c'est plutot pour la console que j'aimerai un rendu correct

    merci de ton interet

  8. #8
    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
    Comment ça tu n'arrives pas à insérer dans la base si elle est en UTF8 ??
    L'encoding par défaut de ta plateforme c'est quoi ? UTF8 ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    l'encoding par defaut de mysql semble etre latin1

    quand ej suis en utf8 il reconnais pas les à,é,.. quand je tape une requete d'insertion, requete qui ne pose pas de probleme en latin 1

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    plus personne n'a d'idée ?

  11. #11
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si l'encodage de ta base est latin-1 alors l'encodage de ton appli doit être latin-1 c'est à dire en ISO-8859-1 pour le charset
    ++
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  12. #12
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Et si tu indiques le charset de la base au niveau de l'URL ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String url = "jdbc:mysql://127.0.0.1/projet?charset=iso_1";
    iso_1 correspond au latin-1

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    comment puis-je faire pour que quand mon appli fais un truc du genre :

    ResultSet rs ..
    ......

    String s = rs.getString("nomColone");


    l'appli sache que la Stri,ng est en iso-8859-1 ??


    merci de ton aide

  14. #14
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Normalement, le JBDC détermine tout seul le charset de la base. Cela fonctionne plus ou moins bien.

    Moi, j'ai eu des problèmes récemment au niveau des accents (suite à un changement de version de base et de JDBC). Maintenant, j'indique systématiquement le charset au niveau de l'URL de la base.

    Je n'ai plus de soucis.

  15. #15
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah tu ne le fais pas.

    Il te suffit juste d'inclure ceci dans tes JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@ page language="java" contentType="text/html;charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    ok mais la pour le moment je veux pas voir le resultat dans mes JSP je voudrais juste l'afficher dans ma console (netbeans)


    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
     
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.CharsetDecoder;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import mainPackage.article.ArticleModel;
    /*
     * Essai.java
     *
     * Created on 26 mai 2007, 16:37
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    /**
     *
     * @author ACER
     */
    public class Essai {
        private String url;
        private Connection c;
        CharsetDecoder decodeur ;
        /** Creates a new instance of Essai */
        public Essai() {
     
            try{
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://127.0.0.1/projet";
                c =   DriverManager.getConnection(url, "root", "sangoku");
                //DriverManager.getConnection("jdbc:mysql://127.0.0.1/projet"+"?useUnicode=true&characterEncoding=cp1250", "root", "sangoku");
            }catch (Exception e) {
     
            }
     
        }
     
        public void get() throws UnsupportedEncodingException{
            ArticleModel m = null ;
            String myString = "";
            try {
     
                // On recupere le numero de ce client
                Statement s = c.createStatement();
                ResultSet rs = s.executeQuery("select * from article ");
     
     
                while ( rs.next() ) {
                    System.out.println(rs.getString("texte"));
                }
     
            } catch (SQLException ex) {
     
            }
     
        }
     
        public static void main(String [] args) throws UnsupportedEncodingException{
            Essai e = new Essai() ;
            e.get();
        }
     
     
     
     
     
     
    }

    par exemple avec ce petit programme


    merci de ta patience

  17. #17
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah dans ce cas là tout dépend de l'encoding de la console...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    alors la par contre je n'en est pas la moindre idée ...
    on peut le savoir d'une certaine maniere ?

    merci de tes reponses

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    no l'ecriture dans un fichier, ni les page jsp avec les bonne en tete ne fonctionne la ca commence a me derpimer

    quelqu'un a une idée miracle ?

  20. #20
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Et en forçant les paramètres de langues de la JVM ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Locale.setDefault(Locale.FRANCE);

Discussions similaires

  1. probleme d'accents Mysql-Java
    Par pigpen dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/05/2007, 17h36
  2. Réponses: 14
    Dernier message: 08/08/2006, 11h31
  3. [Accent et MySQL 5] Probleme d'accent
    Par spk4ever dans le forum Installation
    Réponses: 7
    Dernier message: 09/03/2006, 12h22
  4. [MySQL 4.1] probleme d'accents sur une requete SQL
    Par tatayoyo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/11/2005, 16h06
  5. probleme d'accents
    Par otb82 dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/10/2003, 12h03

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