gtk显示中文乱码

⌚Time: 2022-11-12 02:16:21

👨‍💻Author: Jack Ge

出现警告


Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()

如果你的源代码文件是ansi这种本地代码页的编码格式,就需要把编码转换成utf-8。否则就会出现字符串乱码问题。

使用下面语句实现转换,如果你知道本地编码类型

gchar *utf8_str = g_convert("顶顶顶", -1, "UTF-8", "GB2312", NULL, NULL, NULL);
gtk_label_set_text(GTK_LABEL(lIdentificationResult), utf8_str);
g_free(utf8_str);

或者你不知道本地编码类型,就是用下面的办法转换

gchar *utf8_str = g_locale_to_utf8("顶顶顶", -1, NULL, NULL, NULL);
gtk_label_set_text(GTK_LABEL(lIdentificationResult), utf8_str);
g_free(utf8_str);

在cpp开发中,应该统一使用utf8编码字符串。将所有源文件保存成utf8编码格式。这样对于gtk就不会有任何语言乱码的问题。也不需要频繁调用转码函数进行编码转换。