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 :

[SQLite] Mauvais affichage caractères Asiatique


Sujet :

Qt

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut [SQLite] Mauvais affichage caractères Asiatique
    Bonjour à tous,

    Je rencontre un petit problème avec le code suivant, lorsqu'il sagit d'ajouter des caractères japonais dans ma base de donnée SQLite.

    Je poste mon code à l'aide d'une image car le forum n'affiche pas les bons caractères non plus.



    Voilà le résultat que j'obtiens.



    J'ai déjà écumer le net en vain. Quelqu'un aurait-il une piste ?

    Merci d'avance.

  2. #2
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    salut, je ne connais pas les bases de données, mais ça à l'air d'être un problème de codage des caractères (soucis de unicode et cie).
    Est-ce que tu as un moyen de dire à ta base de données le format des caractères que tu veux stocker ?

    en cherchant rapidement sur le web, il y a des allusions à

    SujiG: Zuomin's answer is the correct one: you must prefix all Unicode strings with N, as in N'満員'. If you forget the N prefix, you get ?s. Also, the variable or column must be one of the "n" types, like nvarchar, nchar, or ntext
    .

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci pour la réponse.

    j'avais déjà préfixé mes variable avec "n". Cependant je n'avais pas essayer de préfixer les caractères.

    Malheureusement cela ne fonctionne pas.

    J'ai aussi 3 warning à la compil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1>.\mainwindow.cpp(79) : warning C4566: character represented by universal-character-name '\u65E5' cannot be represented in the current code page (1252)
    1>.\mainwindow.cpp(80) : warning C4566: character represented by universal-character-name '\u706B' cannot be represented in the current code page (1252)
    1>.\mainwindow.cpp(81) : warning C4566: character represented by universal-character-name '\u6C34' cannot be represented in the current code page (1252)

  4. #4
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    humm, à tout hasard vas dans les options de projets, puis :
    Projet->properties->Configuration properties->general->character set puis choisi "use unicode character set"

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci.

    Alors au risque de passer pour le dernier des débile je pose quand même la question Lorsque je fait clique droit sur mon project et propriété je ne trouve pas l'option unicode :



    J'ai chercher un peut ailleurs dans le programme sans succès ...

  6. #6
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    C'est moi qui aie oublié de te dire que j'utilise VS2008 complet, pas l'express ! là, je sais pas plus quoi te dire, attends une réaction de mongaulois

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Je suis sur la version Pro de Visual Studio pourtant

  8. #8
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    ah pourtant

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Ha ouais quand même... Euhm comment as tu crée ton projet ?

  10. #10
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Une image vaut mieux qu'un long discours :


  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Ha tu dois avoir la version "complète" de Qt je n'est que la version OpenSource

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut
    Citation Envoyé par Kastagne Voir le message
    Ha tu dois avoir la version "complète" de Qt je n'est que la version OpenSource
    L'unicode dans visual , n'as rien a voir avec Qt.
    Si tu ecrit cela dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query.exec("insert into kanji values(1, '日', 'Soleil')");
    je ne voie pas comment le compilot peut s'y retrouver....
    normalement, un caractère déclaré avec ''est sur 1 octet? Un caratère ecrit avec L'' est sur 2 octet.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci de ta participation

    Je n'est pas bien suivit par contre il faut que je code ainsi L'caractère' ?

  14. #14
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    peut-être que tu pourrais aussi regarder du côté de QTextCodec et QChar.
    si 0x4752 est le code hexa de ton caractere, ça pourrait devenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query.exec("insert into kanji values(1, QChar(0x4572), 'Soleil')");

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Malheureusement la solution QChar n'a pas l'ai de fonctionner.

    Je regarde pour QTextCodec merci.

  16. #16
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Bon, ben, si tu peux débugger, tu devrais regarder quelle valeur est stockée dans la base de données.

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Ton problème est que tu veut un formatage unicode dans le code.
    Il faut que tu utilise des wchar_t qui sont sur 2 octetc par caractère et non des char. D'où le L pour spécifier que c'est des wchar_t.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <QtGui>
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
    	QPushButton but(QString::fromStdWString(L"\u65E5  \u706B  \u6C34"));
        but.show();
        return app.exec();
    }
    voulà un exemple qui met les caractères qui tu semble vouloir. Pourquoi semble? par ce que ca va dépendre du type d'encodage.

    Il faut savoir que les QString est un ensemble de caractère unicode dont son contenue dépend de l'encodage utilisé.

    http://qt.developpez.com/doc/4.4/qstring/#details

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci à tous pour vos réponse ! (En particulier à mongaulois pour le support multi-forum )

    J'arrive maintenant à une solution qui fonctionne ! Voici la solution si cela peut être utile à quelqu'un à l'avenir.

    Le code suivant fonctionne donc bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        query.exec(QString::fromStdWString(L"insert into kanji values(1, '\u65E5', 'Soleil')"));
    	query.exec(QString::fromStdWString(L"insert into kanji values(2, '\u706B', 'Feu')"));
    	query.exec(QString::fromStdWString(L"insert into kanji values(3, '\u6C34', 'Eau')"));
     
    Ho miracle



    Merci encore

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

Discussions similaires

  1. mauvais affichage caractères spéciaux en utf-8
    Par laurentSc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/06/2012, 12h21
  2. mauvais affichage des caractères dans IE
    Par Lionel_aw dans le forum jQuery
    Réponses: 8
    Dernier message: 28/02/2011, 11h31
  3. Mauvais affichage avec les caractères accentués
    Par friedamichelle dans le forum JSF
    Réponses: 1
    Dernier message: 23/12/2010, 16h40
  4. mauvais affichage d'accents et caractères spéciaux
    Par cholopat dans le forum Langage
    Réponses: 7
    Dernier message: 24/10/2009, 02h29
  5. Affichage caractères asiatique avec composants standard
    Par FransTreb dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/12/2005, 17h20

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