pythonGtk.Clipboard.get()gtk3返回值不同

2024-04-25 07:17:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想改变信仰Gtk.Clipboard.get()将值返回到utf-8。在

gtk3

from gi.repository import Gtk, Gdk

def main():
    clip = Gtk.Clipboard.get (Gdk.SELECTION_PRIMARY)
    text=clip.wait_for_text ()
    print text
    text=text.encode("utf-8")
    print text 

main()

它只适用于选定的文本只保留ascii字符,但如果有一些国家字符(法语/德语等),我会从文本.编码(..)功能: UnicodeDecodeError:“ascii”编解码器无法解码位置1中的字节0xc3:序号不在范围内(128)

你知道问题出在哪里了吗?如何让gtk3版本工作?在

当我使用gtk2时,这是正确的gtk.clipboard\u获取功能():

^{pr2}$

谨致问候


Tags: text文本功能gtkgetclipmainascii
2条回答

wait_for_text()确实返回str类型,但这不是错误的:utf-8字符串由str类型表示。在

我还想到,这条线总是会产生错误:

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

因此,我的gtk3示例的行为是正确的。结论:text.encode("utf-8")手术应该取消。在

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

print type(text)

看看它是什么样的物体。在

您可以尝试utext = text.decode('utf8')来获取unicode对象。在

相关问题 更多 >