本帖最后由 不爱胡萝卜的仓鼠 于 2023-12-26 13:32 编辑
写在最前面:我没有解决在MP135上使用GTK绘制的界面如何显示中文的问题,但是我找到了一些方向,只是不知道该如何操作
我绘制了一个界面,放置了一个标签,标签上写“刷新”,标签的代码如下
GtkWidget *label = gtk_label_new("刷新");
但是界面显示的是一串乱码,如下图所示
于是我就去网上找GTK显示中文的帖子,基本上都是说中文编码的问题,GTK只认UTF-8,需要在代码中加入转换函数,转成UTF-8编码。我也照做了,没有用。
我就怀疑是不是转换函数没有生效,我就直接手动把中文转换成TUF-8编码
装进数组里,直接把数据给GTK(下面放了部分代码,我把“刷新”放到一个按钮上)
char refresh[] = {0x52, 0x37, 0x65, 0xB0, '\0'};
GtkWidget *button_refresh = gtk_button_new_with_label(refresh);
结果SSH界面还多了报错
(gtk_time:1955): Pango-WARNING **: 22:43:01.956: Invalid UTF-8 string passed to pango_layout_set_text()
说我给的不是UTF-8,哦那就有意思了,应该是我直接塞数组的动作有错,但是这也侧面反映了,之前我直接在代码中给中文是正确的。
突然我发现,一开始的界面上现实的乱码其实就是UTF-8的编码,所以我得出一个结论:代码和编译方式都是正确的,但是135上没有对用的中文字库,所以无法显示中文字符。
为了验证我的猜想,我突然想到之前测试时写了一个printf当前时间的demo,打印出的内容中就有中文,在SSH中是可以正常显示出来的,在SSH中运行的结果如下
于是我给135插上键盘,运行之前的程序,如下图所示
同样的代码,结果不同,那么我就可以断定,就是135上缺少对应的中文字库。
但是到此为止我已经不知道该怎么下一步了,方向很明确要给他装一个中文字库,但是我就是不知道怎么装,如果有知道该怎么做的大佬,欢迎在评论区指导一下。所以后面我制作demo时只能避开中文了