GTK et g_locale_to_utf8

GTK et g_locale_to_utf8 - C - Programmation

Marsh Posté le 26-04-2010 à 04:31:08    

Bonjour,
 
Voila j'ai un souci concernant une fonction g_locale_to_utf8.
Quand je veux insérer un texte avec des lettres accentuées par le biais de cette fonction, cela ne marche pas.  
Je pense que cela vient de mon OS qui est en anglais.
 

Code :
  1. #include <stdlib.h>
  2. #include <locale.h>
  3. #include <gtk/gtk.h>
  4. #define UTF8(string) g_locale_to_utf8(string, -1, NULL, NULL, NULL)
  5. int main(int argc,char **argv)
  6. {
  7.     GtkWidget* p_Window;
  8.     GtkWidget* p_Label;
  9. gchar* sUtf8;
  10.     setlocale(LC_ALL, "fr_FR.ISO-8859-1" );
  11.     gtk_init(&argc,&argv);
  12.     p_Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  13.     gtk_window_set_title(GTK_WINDOW(p_Window), "Series !" );
  14.     gtk_window_set_default_size(GTK_WINDOW(p_Window), 320, 240);
  15. gtk_window_set_position (GTK_WINDOW (p_Window), GTK_WIN_POS_CENTER);
  16. /* gtk_window_set_icon_from_file(GTK_WINDOW (p_Window),); */
  17. g_signal_connect(G_OBJECT(p_Window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  18.     sUtf8 = UTF8("Un <b>texte</b> sans accents !" );
  19.     p_Label=gtk_label_new(sUtf8);
  20.     gtk_label_set_use_markup (GTK_LABEL(p_Label), TRUE);
  21.     g_free(sUtf8);
  22.     gtk_container_add(GTK_CONTAINER(p_Window), p_Label);
  23.     gtk_widget_show_all(p_Window);
  24.     gtk_main();
  25.     return EXIT_SUCCESS;
  26. }


 
http://yionel.fr/vrac/Screenshot-Series%20!.png
 
J'ai donc essayé de mettre une fonction setlocale(LC_ALL, "fr_FR.ISO-8859-1" ); mais cela ne marche pas non plus.
Pouvez vous m'aider ?  
 
Merci beaucoup !


Message édité par Yionel le 26-04-2010 à 08:19:59
Reply

Marsh Posté le 26-04-2010 à 04:31:08   

Reply

Marsh Posté le 26-04-2010 à 11:09:44    

Vérifie que les locales UTF-8 sont installées au niveau de l'OS
(dpkg-reconfigure locales pour Debian et dérivés)
 
J'ai essayé ceci sur ma machine:

Code :
  1. #include <stdlib.h>
  2. #include <gtk/gtk.h>
  3. #define UTF8(string) g_locale_to_utf8(string, -1, NULL, NULL, NULL)
  4. int main(int argc,char **argv)
  5. {
  6.     GtkWidget* p_Window;
  7.     GtkWidget* p_Label;
  8. gchar* sUtf8;
  9.     gtk_init(&argc,&argv);
  10.     p_Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  11.     gtk_window_set_title(GTK_WINDOW(p_Window), "Series !" );
  12.     gtk_window_set_default_size(GTK_WINDOW(p_Window), 320, 240);
  13. gtk_window_set_position (GTK_WINDOW (p_Window), GTK_WIN_POS_CENTER);
  14. /* gtk_window_set_icon_from_file(GTK_WINDOW (p_Window),); */
  15. g_signal_connect(G_OBJECT(p_Window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  16.     sUtf8 = UTF8("Un <b>texte</b> avec accents ààà yéééé  !" );
  17.     p_Label=gtk_label_new(sUtf8);
  18.     gtk_label_set_use_markup (GTK_LABEL(p_Label), TRUE);
  19.     g_free(sUtf8);
  20.     gtk_container_add(GTK_CONTAINER(p_Window), p_Label);
  21.     gtk_widget_show_all(p_Window);
  22.     gtk_main();
  23.     return EXIT_SUCCESS;
  24. }


 
Et tout fonctionne parfaitement ;)

Reply

Marsh Posté le 26-04-2010 à 20:48:52    


 
oh ! salopio !! ça marche super !!  [:cerveau neuf]  [:cerveau neuf]  merci beaucoup !!
 
Par contre, peux tu me dire pourquoi les locales UTF-8 ne sont pas installées ? par défaut Ubuntu gère d'autres locale ISO truc par exemple ?
Je ne saisi pas bien le concept
 

Reply

Marsh Posté le 27-04-2010 à 10:31:18    

Je sais pas trop pour Ubuntu, mais Debian demande de choisir la locale par défaut lors de l'installation.
(et propose de générer éventuellement d'autres locales)
 
Pour une distro récente, ça m'étonnerait fortement que le système choisisse par défaut ISO-8859-1 ou 15 à la place d'UTF-8 ...

Reply

Marsh Posté le 27-04-2010 à 15:03:41    

404 Not Found a écrit :

Je sais pas trop pour Ubuntu, mais Debian demande de choisir la locale par défaut lors de l'installation.
(et propose de générer éventuellement d'autres locales)
 
Pour une distro récente, ça m'étonnerait fortement que le système choisisse par défaut ISO-8859-1 ou 15 à la place d'UTF-8 ...


 
Bah ma Karmic qui est la plus récente qui soit n'avait pas d'UTF-8 par défaut  [:cerveau klem]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed