Подтвердить что ты не робот

Как исправить ошибку кодирования Unicode с помощью модуля hashlib?

После нескольких поисков я не смог определить, как избежать сообщения об ошибке: "Юникод-объекты должны быть закодированы до хэширования" при использовании этого кода:

    pwdinput = input("Now enter a password:")
    pwd = hashlib.sha1()
    pwd.update(pwdinput)
    pwd = pwd.hexdigest()

Как я могу пройти мимо этой ошибки? Как вы кодируете Unicode-объекты?

4b9b3361

Ответ 1

pwdinput = input("Now enter a password:").encode('utf-8') # or whatever encoding you wish to use

Предполагая, что вы используете Python 3, это преобразует строку Unicode, возвращаемую input() в объект bytes, закодированный в UTF-8, или любую кодировку, которую вы хотите использовать. Предыдущие версии Python также имеют это, но их обработка строк Unicode и non-Unicode была немного беспорядочной, в то время как Python 3 имеет четкое различие между строками Unicode (str) и неизменяемыми последовательностями байтов, которые могут или могут не представляют символы ASCII (bytes).

http://docs.python.org/library/stdtypes.html#str.encode
http://docs.python.org/py3k/library/stdtypes.html#str.encode