Python:使用 py2app 冻结后无法识别字符"u200b"



我们在工作中使用Sharepoint,有时从Sharepoint复制某些内容后,字符"\u200b"(一个零宽度字符)会进入我们的文件名和文档。

我用Python 3和PyQt5制作了一个应用程序,它可以监控剪贴板,使用repr()显示其内容,如果在剪贴板内容中找到该字符,则会显示系统通知。

它在Windows下运行良好,在El Capitan下冻结前运行良好,但在使用py2app冻结后,我的程序显示"?"而不是"\u200b",因此不会显示通知。我正在虚拟机(VirtualBox)中进行测试,如果这会改变什么的话。

有没有办法用py2app解决这个问题,我应该使用另一个冻结程序,还是应该更改我的代码?

编辑:我有一个用日语写的文本文件,我刚刚注意到同样的事情发生了:在冻结之前,日语字符在我的应用程序中正确显示,但在冻结之后,它们会转换为"?"。

监视剪贴板的线程:

recent_value = ""
while True:
tmp_value = pyperclip.paste()
if tmp_value != recent_value:
recent_value = tmp_value
self.clip.emit(recent_value)
time.sleep(0.1)

应用程序中的验证:

@QtCore.pyqtSlot(str)
def clipboard_slot(self, value):
real_value = repr(value)[1:][:-1]
# validation
if "\u200b" in real_value:
self.tray_icon.showMessage("Warning", "Invalid character detected in clipboard contents.")

我认为您可以使用unicode字符串。

"\u200b"必须是u"\u200b">

if u"\u200b" in real_value:
self.tray_icon.showMessage("Warning", "Invalid character detected in clipboard contents.")

最新更新