web-dev-qa-db-ja.com

hashlibモジュールを使用してUnicodeエンコードエラーを修正する方法

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

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

どうすればそのエラーを回避できますか? Unicodeオブジェクトをどのようにエンコードしますか?

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

Python 3を使用していると仮定すると、これはinput()から返されたUnicode文字列をUTF-8でエンコードされた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

49
JAB