Unicode Gtk文本缓冲区在偏移量处获取

Unicode Gtk文本缓冲区在偏移量处获取,unicode,gtk,gedit,gedit-plugin,Unicode,Gtk,Gedit,Gedit Plugin,我正在为Gedit编写一个插件,它根据正则表达式对某些单词进行更改。在某些情况下,这是将标记应用到预期单词之外的几个字符 因此,match.start()和match.end()返回的值在get\u iter\u at\u offset中无效 def on_save(self, doc, location, *args, **kwargs): """called when document is saved""" for match in WORD_RE.finditer(get

我正在为Gedit编写一个插件,它根据正则表达式对某些单词进行更改。在某些情况下,这是将标记应用到预期单词之外的几个字符

因此,match.start()和match.end()返回的值在get\u iter\u at\u offset中无效

def on_save(self, doc, location, *args, **kwargs):
    """called when document is saved"""
    for match in WORD_RE.finditer(get_text(doc)):
        if not self._checker.check(match.group().strip()):
            self.apply_tag(doc, match.start(), match.end())

def apply_tag(self, doc, start, end):
    """apply the tag to the text between start and end"""
    istart = doc.get_iter_at_offset(start)
    iend = doc.get_iter_at_offset(end)
    doc.apply_tag(self._spell_error_tag, istart, iend)

我终于明白了,这应该是显而易见的。 文档中的文本包含一些非ascii字符,因此正则表达式无法正确确定位置,将文档字符串解码为unicode解决了这个问题

因此:

get_text(doc).decode('utf-8')