分类: C/C++
2009-05-10 06:51:56
在GTK+编写程序,免不了要接触中文,主要有中文字符显示和读取(保存)含有中文字符路径的文件。这些操作主要涉及下面两个Glib函数:
gchar *g_locale_to_utf8(const gchar *opsysstring, gssize len, gsize *bytes_read, gsize *bytes_written, GError **error); |
GTK+中一般使用的是UTF-8字符编码,如果要在GTK+ widget上显示中文字符,则要使用g_locale_to_utf8()函数,而在GTK+程序中要在console显示中文字符或者fopen()读取含有中文字符路径的文件时,则用g_locale_from_utf8()。函数的具体说明可以参考GLib Reference Manual。
上述两个函数的参数比较多,实际使用中比较繁琐,可以对其进行一次封装:
|
这样使用就方便很多了。
下面举例说明用法:
(1). 在GTK+ widget上显示中文:
|
(2). 在console上显示中文:
|
这段代码主要是从文件选择dialog的widget中获取一个文件名(绝对路径),要在console上显示该路径。
(3). 读取(保存)含中文字符路径的文件:
|
通过文件选择dialog的widget中获取一个文件名(绝对路径),然后用fopen函数打开。
从上述分析中可以看出,涉及到在widget上显示中文字符的,就要转换成UTF-8编码字符,用g_locale_to_utf8(),而涉及到从widget获取字符(字符串)但不在widget上进行操作(一般是标准C的一些函数),就要把GTK+的UTF-8编码转换到本地编码,用g_locale_from_utf8()。