29

複数の検索を行った後、次のコードを使用する場合、「Unicodeオブジェクトはハッシュする前にエンコードする必要があります」というエラーを回避する方法を特定できませんでした。

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

どうすればそのエラーを乗り越えることができますか?Unicodeオブジェクトをどのようにエンコードしますか?

4

1 に答える 1

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

Python 3を使用しているとすると、これにより、によって返されるUnicode文字列が、UTF-8でエンコードさinput()れたbytesオブジェクト、または使用したいエンコードに変換されます。以前のバージョンのPythonにもそれがありますが、Unicode文字列と非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

于 2011-07-13T17:49:45.633 に答える