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

Qt Discussion :

Probléme caratères spéciaux


Sujet :

Qt

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Probléme caratères spéciaux
    Salut tout le monde,
    j'ai ecrit un programme Qt qui doit faire la migration d'une base de données Interbase vers une base Mysql.
    Le problème c'est que aprés avoir fait une requête SELECT pour avoir les données d'une table, lorsque je les affiche, tous les caractères spéciaux du français tels que (é, è, ç, à, etc) sont affichés des " ? ".
    Voici le code de la fonction de connetion à la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    QSqlDatabase db = QSqlDatabase::addDatabase(driver, name);
        db.setHostName(host);
    	db.setDatabaseName(path);
        db.setUserName(user);
        db.setPassword(pwd);
    	if(driver == "IBASE")
    		db.setConnectOptions("ISC_DPB_LC_CTYPE = UTF8");
     
    	if(!db.open())
    	{
    		qCritical() << "Erreur Ouverture base de données : " << db.lastError().text();
    		return false;
    	}
    	return true;
    Est ce quelqu'un pourrait m'éclaircir ce problème et m'orienter vers une solution.
    Merci d'avance pour votre aide.
    Cordialement

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Tu les affiches où et comment tes données ? Avec Qt ? Ou avec autre chose après avoir fait la migration vers SQL ?

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Juste aprés que j'ai exécuté la requête de selection des données de la base Interbase, je fais un qDebug(). Donc c'est avant de faire quoi que ce soit. Les données sont lues depuis la base d'une fausse manière

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 47
    Points
    47
    Par défaut
    Sais tu si tu as le même problème en associant tes tables avec une QSqlTableModel et en les affichant ensuite ?
    Y'a un petit programme en pièce jointe qui permet d'afficher les données d'une table grace à QSqlTableModel et QTableView, si tu l'adapte à ton cas ça te permettra de vérifier ça si tu l'as pas déjà fait.
    Je n'ai jamais utilisé de IBASE, mais as-tu essayé sans ou avec d'autres options de connections ?
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    A tout hasard, les données dans la base elles sont dans quel charset ? Si le "ISC_DPB_LC_CTYPE = UTF8" fait bien ce que je pense, cad spécifier un charset utf-8 pour la connexion et que les données dont en latin-1, ça me semble normal que les accents ne passent pas.

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 47
    Points
    47
    Par défaut
    Oui ce serait normal, mais à priori le charset peut se configurer au moment de la création de la table (et peut-être se changer plus tard ???), donc on ne pas affirmer que les bases de données soient dans tel ou tel charset (bien qu'il y en ait un pas défaut mais je sais pas lequel).
    As tu essayé de supprimer ta ligne db.setConnectOptions("ISC_DPB_LC_CTYPE = UTF8"); ? cela prendra les options par défaut.

  7. #7
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Merci pour tout le monde pour vos contributions.
    J'ai effectué des test sur une base que j'ai crée et rajouté une table avec différents encodage et ça c'est bien passé.
    En fait j'ai constaté que la base originale a été crée sans aucun encodage, de ce fait, j'ai changé l'encodage de qques champs puis j'ai crée une nouvelle ligne et fais la migration et ça marche. Par contre ça ne marche pas avec les anciènne lignes. Je dois alors faire un backup des données, changer l'encodage des lignes et restaurer les données.
    Merci encore.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/05/2015, 19h47
  2. Problème remplacement caratères spéciaux
    Par rob1son76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2014, 16h22
  3. Problème caratères spéciaux lors de changement d'OS
    Par pony99 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 28/01/2012, 20h16
  4. Probléme caratères spéciaux avec mysqldump
    Par mercure07 dans le forum Administration
    Réponses: 7
    Dernier message: 03/02/2009, 22h46
  5. Problème caractères spéciaux...
    Par the_edge dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2006, 09h49

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