Очевидно, hashlib.sha1
ожидает не объект unicode
, а последовательность байтов в объекте str
.Кодирование вашей строки unicode
в последовательность байтов (с использованием, скажем, кодировки UTF-8) должно исправить это:
>>> import hashlib
>>> s = u'é'
>>> hashlib.sha1(s.encode('utf-8'))
<sha1 HASH object @ 029576A0>
Ошибка в том, что она пытается преобразовать объект unicode
вstr
автоматически, используя кодировку ascii
по умолчанию, которая не может обрабатывать все эти символы, не входящие в ASCII (поскольку ваша строка не является чистым ASCII).
Хорошая отправная точка для получения дополнительной информации оUnicode и кодировки - это Python docs , и эта статья Джоэла Спольски .