Wie der Fehler vermuten lässt, muss Ihr string
Unicode sein und Sie müssen es kodieren. Betrachten Sie den Aufruf, den Sie (von Ihrem Stack-Trace) machen:
Es sieht so aus, als müssten Sie Python 3 ausführen, wo Strings Unicode-Objekte sind. Um zu einer Byte-Darstellung zu kodieren, die dann von der hashlib verarbeitet werden kann, ändern Sie dies
%Vor%dazu (wenn utf-8 ist eine geeignete Codierung für Sie zu verwenden - es hängt davon ab, wie Sie dies verwenden werden):
%Vor%Wenn das alles neu für Sie ist, sollten Sie wahrscheinlich das ausgezeichnete Python 3 Unicode HOWTO lesen.
Auch während ich hier bin, hat Ihr Code einige andere Probleme
from hashlib import
-Zeile oder die temporäre md5string
. import hashlib
in den Modulbereich verschoben werden. digest()
zurück, die eine rohe Binärdatei ist. und von Ihrem Stack-Trace sieht es so aus, als würden Sie das hexdigest()
erwarten Stattdessen wird dasselbe wie eine hexadezimale Zeichenfolge dargestellt. Um das Problem zu beheben und zu beheben, versuchen Sie Folgendes:
%Vor%Anstatt zu versuchen, die Zeichenfolge zu hashen, sollten Sie eine codierte Bytefolge hashen. Anstelle von
%Vor%Sie sollten es codieren, z. B .:
%Vor%In Python 2 könntest du ohne dies auskommen und es führte zu einem Ende der unbemerkten Bugs. Glücklicherweise hat Python 3 viel bessere Unicode-Unterstützung und unterscheidet zwischen Bytes und Strings.
importieren sys, os, stat importiere pygtk, gtk importieren zbarpygtk importiere pycurl von Zeit importieren strftime, localtime Importieren Sie pango
Klasse qrdat:
%Vor%Wenn Name == " main ":
%Vor%Tags und Links python string python-3.x md5