linux的gtk无法显示中文,GTK中文显示出现乱码解决方案

在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+VS2010 下测试成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值