python Gtk.Clipboard.get()gtk3返回值不同

python Gtk.Clipboard.get()gtk3返回值不同,python,clipboard,gtk3,Python,Clipboard,Gtk3,我想将Gtk.Clipboard.get返回值转换为utf-8 gtk3 只有当选定的文本只保留ascii字符时,它才起作用,但如果有一些国家字符是法语/德语等,我会从text.encode中得到错误。。功能: UnicodeDecodeError:“ascii”编解码器无法解码位置1中的字节0xc3:序号不在范围128中 您是否知道问题出在哪里以及如何使gtk3版本正常工作 当我使用gtk2的gtk.clipboard_get函数时,这是正确的: import gtk def main():

我想将Gtk.Clipboard.get返回值转换为utf-8

gtk3 只有当选定的文本只保留ascii字符时,它才起作用,但如果有一些国家字符是法语/德语等,我会从text.encode中得到错误。。功能: UnicodeDecodeError:“ascii”编解码器无法解码位置1中的字节0xc3:序号不在范围128中

您是否知道问题出在哪里以及如何使gtk3版本正常工作

当我使用gtk2的gtk.clipboard_get函数时,这是正确的:

import gtk

def main():
    clip = gtk.clipboard_get ('PRIMARY')
    text=clip.wait_for_text ()
    print text
    text=text.encode("utf-8")
    print text 
main()

致以最诚挚的问候

这里只是一个猜测。根据文档,剪贴板的wait_for_text方法应该已经为您提供UTF-8编码的字符串。可能是GTK3版本错误地返回了str而不是unicode对象。要测试这一点,请尝试添加

print type(text)
看看它是什么样的物体

您可以尝试utext=text。解码“utf8”以获取unicode对象。

等待\u text确实返回str类型,但这并不是错误:utf-8字符串由str类型表示

我还想到,这一行总是会产生错误:

some_Unicode_String_With_Non_Ascii.encode("utf-8").encode("utf-8"),
因此,我的gtk3示例的行为是正确的。作为结论:text.encodeutf-8操作应该被删除

some_Unicode_String_With_Non_Ascii.encode("utf-8").encode("utf-8"),