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

GTK+ Discussion :

UTF8 dans une lib non fonctionnel


Sujet :

GTK+

  1. #1
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut UTF8 dans une lib non fonctionnel
    bonjour,
    j'ai un léger souci lié à l'encodage de caractères sous GTK+
    typiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //ErrorStr est un char* alloué dans la heap plus tôt dans le même fichier source
    gchar* labelTmp = g_locale_to_utf8(ErrorStr, -1, NULL, NULL, NULL);
    GtkWidget* ht_ckbox = gtk_check_button_new_with_label(labelTmp);
    g_free(labelTmp);
    est fonctionnel
    l'affichage dans mon interface en GTK+ marche impec

    maintenant j'ai compliqué les choses.
    j'ai créé une lib dans laquelle j'ai écris quelque phrases accentuées (3 ou 4 messages d'erreur écrient en français)
    j'ai build cette lib, et je la link avec mon application

    sous Windows, aucun soucis, le label apparait comme il faut

    sous Linux, aucun texte n'apparait
    il se trouve que la fonction "g_locale_to_utf8" me retourne un pointeur NULL

    pour transposer sur le code ci-dessus

    si "ErrorStr" est déclarée dans la heap dans une Lib (.lib sous win | .a sous nux)
    l'encodage en utf8 retournera NULL

    si "ErrorStr" est déclarée dans la même application (que ce soit dans le même bloc de code ou en tant qu'attribut de la class appelante)
    l'encodage en utf8 fonctionnera

    y'a t-il une option de compilation a balancer au linker pour ne plus avoir ce problème, y'a t-il une raison (surement ^_^) à ce souci ?

    merci
    i = i++;

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Les fichiers sources de la lib. sont-ils encodés en UTF8 sur le disque dur?

  3. #3
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    non, ils sont en ANSI, mais c'est le cas aussi pour les fichiers source de l'application, d'où le fait que je n'ai pas poursuivi cette voie là
    i = i++;

  4. #4
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    dans le doute j'ai vérifié en modifiant l'encodage.
    en passant les fichiers source de la .lib en UTF8 j'ai le bon résultat...

    je n'aime pas ne pas savoir donc quelqu'un saurait m'expliquer pourquoi :
    - sous windows ça marche même si le fichier est encodé en ANSI
    - sous linux, le fichier source de la lib doit être dans l'encodage désiré, alors que dans le fichier source de l'application, peu importe

    ???

    merci

    (merci gerald3d)
    i = i++;

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    g_locale_to_utf8 dans une bibliothèque, ça a peu de sens, en utilisant g_locale_to_utf8 tu codes en dur le fait que la locale dans laquelle ta bibliothèque doit être utilisée est XXX, et en faisant une bibliothèque, tu essaies de tendre vers quelque chose d'un peu générique. Les 2 me paraissent assez contradictoires. Je passerais par une approche "chaînes en anglais dans la bibliothèque" associée à une utilisation de gettext pour les traductions

  6. #6
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    g_locale_to_utf8 n'est pas dans la lib, la lib contient juste quelque "char*"
    les appelles à g_locale_to_utf8 se font dans l'application et prennent en paramètre un "char*" de la lib
    i = i++;

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Mets uniquement des chaînes en utf8 dans ta bibliothèque, ça évitera beaucoup de problèmes.

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

Discussions similaires

  1. [VB.net] Stocker un id dans une combo non chargée via ds ?
    Par RiiiDD dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2006, 11h21
  2. Pb appel fonction dans une lib
    Par mamok dans le forum MFC
    Réponses: 14
    Dernier message: 01/02/2006, 18h40
  3. [Struts]Variable dans une action non réinitialisé
    Par brousaille dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/01/2006, 00h53
  4. Creation d'un message dans une dll non MFC
    Par dug dans le forum Windows
    Réponses: 1
    Dernier message: 29/11/2005, 12h50
  5. Recherche dans une liste non trié
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/09/2004, 13h56

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