複数の検索を行った後、このコードを使用すると、「ハッシュする前にUnicodeオブジェクトをエンコードする必要がある」というエラーを回避する方法を判断できませんでした。
pwdinput = input("Now enter a password:")
pwd = hashlib.sha1()
pwd.update(pwdinput)
pwd = pwd.hexdigest()
どうすればそのエラーを回避できますか? Unicodeオブジェクトをどのようにエンコードしますか?
_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