在GTK+中,必须使用UTF-8的编码来显示中文。但我们平时在国内使用的是GB码。所以,由于编码不同会造成中文乱码的。解决的关键就是将中文转换成UTF-8再传给GTK显示就可以了。
GTK+提供了一个函数g_locale_to_utf8(),这个函数是GTK将系统默认编码转换成UTF-8的一个函数。但是,这个函数每次调用都要传入 5 个参数,太多又麻烦。所以,可以用一个函数来封装一下: char* _T(char* str) { return g_locale_to_utf8(str, -1, 0, 0, 0); } 如果需要调用时,就用 _T("你要显示的中文")就可以了成功显示中文了。 这个方式在Redhat Linux 9和Windows XP下测试都成功了。
例如:
#include
#include
gchar* _T(char* str)
{
return g_locale_to_utf8(str, -1, 0, 0, 0);
}
void delete(GtkWidget *widget,GtkWidget *event,gpointer data)
{
gtk_main_quit();
}
int main(int argc, char*argv[])
{
GtkWidget *window;
//初始化GTK
gtk_init(&argc,&argv);
//创建最上层主窗口
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//连接信号"delete_event",使得窗口关闭时发生
g_signal_connect(G_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete),NULL);
//设置窗口标题
gtk_window_set_title(GTK_WINDOW(window),_T("notebook 练习"));
//设定窗口的默认宽高
//gtk_window_set_default_size(GTK_WINDOW(window),200,300);
//设定窗口的位置,让窗口总在最前端
gtk_widget_show(window);
gtk_main();
return FALSE;
} 我在windowsXP+VS 下测试成功。