2017-11-15 10 views
0

私の仕事でSharepointを使用していますが、文字幅が0の文字である"\u200b"がSharepointから何かをコピーした後にファイル名とドキュメントに入ります。Python:文字「 u200b」がpy2appでフリーズした後に認識されない

クリップボードを監視し、内容をrepr()で表示するPython 3とPyQt5でアプリを作って、その文字がクリップボードのコンテンツに見つかるとシステム通知を表示します。

Windowsでは正常に動作し、凍結する前にEl Capitanで正常に動作しますが、py2appで凍結した後、私のプログラムは「?」と表示します。 "\ u200b"ではなく、通知が表示されません。私はバーチャルマシン(VirtualBox)でテストしています。

py2appでこれを修正する方法はありますか?他のフリーズプログラムを使用している場合、コードを変更する必要がありますか?

EDIT:日本語のテキストファイルがあり、同じことが起こったことがわかりました。フリーズする前に日本語の文字が正しく表示されますが、フリーズした後は「?」に変換されます。クリップボードを監視

スレッド:アプリで

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.") 

答えて

0

私はあなたがUnicode文字列を使用することができると思います。

"\ u200b" Uでなければならない "\ u200b"

if u"\\u200b" in real_value: 
      self.tray_icon.showMessage("Warning", "Invalid character detected in clipboard contents.") 
関連する問題