ich bräuchte wieder ein Mal Hilfe von euch.
Ich habe nun angefangen mich mit GUI-Programmierung in C zu beschäftigen. Mit Gtk+.
Derzeit befasse ich mich allerdings noch mit GLib.
Nun ist mir aufgefallen, dass deutsche Umlaute nicht funktionieren. Zumindest bei Konsolenprogrammen nicht.
Erstelle ich ein Fenster mit Labels, Buttons usw. werden Umlaute problemlos angezeigt.
Als OS nutze ich Ubuntu 12.04. LTS. C-Code schreibe ich mit gedit UTF-8-Format. Gtk+-Version ist 3.4.2.
Woran könnte das liegen? Folgendes Listing beispielsweise gibt anstatt 'Timer läuft' 'Timer l?uft' aus.

Code: Alles auswählen
/* -*-coding: utf-8;-*- */
/* glib7.c */
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
/* kompilieren: gcc -Wall -o glib7 glib7.c `pkg-config --libs --cflags gtk+-3.0` */
int main()
{
GTimer *timer = NULL;
gdouble time;
gulong us;
gint i = 300000000;
gint j = 300000000;
/* Timer erzeugen */
/* GTimer *g_timer_new(); */
timer = g_timer_new();
/* Timer starten */
/* void g_timer_start( GTimer *timer ); */
g_timer_start( timer );
g_print( "Timer läuft\n" );
while( i-- );
/* Zeit abfragen (Sekunden und Millisekunden), die seit dem Start *
* des Timers vergangen ist */
/* gdouble g_timer_elapsed( GTimer *timer, gulong *msecs ); */
time = g_timer_elapsed( timer, &us );
g_print( "Schleife dekrementiert %g sek == %ld usek\n", time, us );
/* die abgelaufene Zeit auf 0 zurücksetzen (und neustarten) */
/* void g_timer_reset( GTimer *timer); */
g_timer_reset( timer );
while( i++ <= j );
time = g_timer_elapsed( timer, &us );
g_print( "Schleife inkrementiert %g sek == %ld usek\n", time, us );
g_timer_reset( timer );
g_print( "Timer von Hand starten <ENTER>\n" );
getchar();
g_timer_start( timer );
g_print( "Timer von Hand stoppen <ENTER>\n" );
getchar();
/* Timer stoppen */
/* g_timer_stop( GTimer *stop ); */
g_timer_stop( timer );
time = g_timer_elapsed( timer, &us );
g_print( "Vergangene Zeit zwischen Start und Stopp"
" %g sek == %ld usek\n", time, us );
/* Timer zerstören (freigeben) */
/* void g_timer_destroy(GTimer *timer); */
g_timer_destroy( timer );
return 0;
}
Gruß