QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1250|回复: 5

GTk编程中文显示的问题

[复制链接]
发表于 2005-5-9 09:37:34 | 显示全部楼层 |阅读模式
程序很简单,只是要它显示中文的"关闭窗口"四个字
#include <locale.h>
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
        GtkWidget *window;
        GtkWidget *vbox;
        GtkWidget *entry;
        GtkWidget *text;
        GtkWidget *button;
        gtk_set_locale();
        gtk_rc_add_default_file("./gtkrc.zh");
        gtk_init (&argc, &argv);

        /* create a new window */
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        // gtk_widget_set_usize( GTK_WIDGET (window), 200, 500);
        gtk_window_set_title(GTK_WINDOW (window), "GTK Entry");
        gtk_signal_connect(GTK_OBJECT (window), "delete_event", (GtkSignalFunc) gtk_exit, NULL);
        vbox = gtk_vbox_new (FALSE, 0);
        gtk_container_add (GTK_CONTAINER (window), vbox);
        gtk_widget_show (vbox);
        entry = gtk_entry_new_with_max_length (60);
        gtk_entry_select_region (GTK_ENTRY (entry), 0, GTK_ENTRY(entry)->text_length);
        gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
        gtk_widget_show (entry);
        text = gtk_text_new (NULL, NULL); gtk_text_set_editable (GTK_TEXT (text), TRUE);
        gtk_box_pack_start (GTK_BOX (vbox), text, TRUE, TRUE, 0);
        gtk_widget_show(text);
        button = gtk_button_new_with_label ("关闭窗口");
        gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC(gtk_exit), GTK_OBJECT (window));
        gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
        GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
        gtk_widget_grab_default (button);
        gtk_widget_show (button);
        gtk_widget_show(window);
        gtk_main();
        return(0);
}
该目录下的gtkrc.zh内容为
style "gtk-default-zh-cn" {
fontset = "-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
-misc-simsun-medium-r-normal--14-*-*-*-*-*-gbk-0,*-r-*"
}
class "GtkWidget" style "gtk-default-zh-cn"
可是显示的是乱码,请各位指点一下你们是怎么实现中文显示的.我看了网上的一下资料,修改了好多次gtkrc.zh,都是有警告,显示的都是乱码.
谢谢各位了,都搞了好几天了.还是没有搞定!
发表于 2005-5-9 10:41:24 | 显示全部楼层
把文件转换成 utf-8 编译就可以了。 gtk+ 要求传入的字符都是 utf-8 的。

方法: 用 gedit 打开源码,另存时选择编码为 utf-8 再编译一下就可以了。
回复

使用道具 举报

发表于 2005-12-25 11:53:39 | 显示全部楼层
在vi中set encoding=utf8  怎么不管用
回复

使用道具 举报

发表于 2005-12-26 10:24:44 | 显示全部楼层
g_local_to_utf8
回复

使用道具 举报

发表于 2005-12-26 10:57:25 | 显示全部楼层
[quote:e21b98d526="Kan"]g_local_to_utf8[/quote]
用这个 也行...
回复

使用道具 举报

发表于 2005-12-26 15:59:25 | 显示全部楼层
其实是他代码里写的汉字是 GB2312 的,而不是 UTF-8, 不然直接显示出来也没问题,不需要转换。 :-)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 23:53 , Processed in 0.043819 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表