如何在包含宽字符的gtk中设置文本?

时间:2012-11-23 12:44:04

标签: c++ character-encoding gtk

我正在努力尝试在我的Gtk / c ++应用程序中设置wchar_t数组。由于某些未知原因,Gtk方法没有重载形式,它支持wchar_t数组但只支持gchar数组。

我读过一些文章让我想知道它可能是一个可变宽度编码问题,它是用普通的UTF-8设置的。我正在尝试做类似的事情:

std::wstring propertiesText;

/*
String Manipulation...     
*/

gtk_label_set_text( (GtkLabel*)_propertiesLabel, propertiesText.c_str() );

正如我所说,编译器抱怨此方法不支持wchar_t。

如果您可以以任何形式清除我的问题,甚至可以解释有关这些可变宽度编码/宽字符关系的信息。

1 个答案:

答案 0 :(得分:3)

GTK建立在Glib之上。并且Glib深深地认为所有字符串都是UTF-8编码的。另外wchar_t不是很便携(在某些编译器上,它可能是16位,在其他编译器上,它可能是32位)。因此,您应避免在代码中使用wchar_tstd::wstring。顺便说一句,如果您使用C ++进行编码,那么您可能对Gtkmm感兴趣(然后考虑使用Glib::ustring - s)。

如果您出于某种原因绝对需要使用std::wstring,则必须手动明确地与Glib UTF-8编码字符串进行(可能代价很高)转换。