Comment réparer Unicode encoder erreur à l'aide de la hashlib module?
Après de multiples recherches je n'ai pas été en mesure de déterminer comment éviter un message d'erreur indiquant: "Unicode-les objets doivent être codées avant le hachage" lors de l'utilisation de ce code:
pwdinput = input("Now enter a password:")
pwd = hashlib.sha1()
pwd.update(pwdinput)
pwd = pwd.hexdigest()
Comment puis-je obtenir au-delà de cette erreur? Comment faire de l'encodage Unicode-objets?
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes à l'aide de Python 3, cela permettra de convertir le format Unicode chaîne de caractères retournée par
input()
dans unbytes
objet encodé en UTF-8, ou quel que soit l'encodage que vous souhaitez utiliser. Les précédentes versions de Python ne ont bien, mais leur gestion de l'Unicode et non des chaînes Unicode a été un peu brouillon, alors que Python 3 a une distinction explicite entre les chaînes Unicode (str
) et immuables des séquences d'octets qui peuvent ou peuvent ne pas représenter les caractères ASCII (bytes
).http://docs.python.org/library/stdtypes.html#str.encode
http://docs.python.org/py3k/library/stdtypes.html#str.encode
str
etunicode
types de méthode encode, et, pourvu d'une chaîne composée uniquement de caractères ASCII, utf-8 codage de la chaîne est exactement égale à la chaîne d'octets de ces personnages. Ce fait est important si vous voulez que la table de hachage pour "abc" et u"abc" à venir le même. Si vous êtes d'accord avec ces deux traités différemment, alors n'importe quel encodage est très bien.