今天在写的一个GTK程序内容是从一个文本文件(用utf-8编码)读取内容,并显示在窗口的TextView里,首先需要从TextView获得文本的buffer:
然后把字符串放入buffer:
这时候发现一个问题,修改textbuffer的时候竟然提示:
它的意思是我的字符串不是utf-8,奇怪了,文件的确是用utf-8编码的,那我们来测试一下它到底是不是utf-8:
答案竟然是False!
到底是怎么回事呢?算了,不管它先把它转换为unicode:
答案是True了,但是写入buffer的时候还是提示那个错误,说验证utf8的时候失败,这是怎么回是呢?
后来才发现,我从文件中读入的字符串的确是utf-8,但是结尾有个C标准的'/0'作为结尾符,而我现在用的Python是自动记录字符串长度的,不需要'/0',那我们就应该把结束符的'/0'去掉:
终于成功地设置了TextBuffer的内容。

在创建GTK程序时,从UTF-8编码的文本文件读取内容并显示到TextView中遇到问题。当尝试将字符串设置到TextView的buffer时,遇到`g_utf8_validate`失败的警告。通过检查发现,尽管文件是UTF-8编码,但字符串末尾包含C标准的NULL字符。解决方案是删除NULL字符,将其转换为unicode,然后再编码为UTF-8,最后成功设置到buffer中。
3690

被折叠的 条评论
为什么被折叠?



