python – hashlib.md5()TypeError:Unicode对象必须在散列之前进行编码

前端之家收集整理的这篇文章主要介绍了python – hashlib.md5()TypeError:Unicode对象必须在散列之前进行编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新的编码,并遇到一个问题,试图编码一个字符串.
>>> import hashlib
>>> a = hashlib.md5()
>>> a.update('hi')
Traceback (most recent call last):
  File "<pyshell#22>",line 1,in <module>
    a.update('hi')
TypeError: Unicode-objects must be encoded before hashing
>>> a.digest()
b'\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04\xe9\x80\t\x98\xec\xf8B~'
@H_502_4@是(a)现在被认为是编码?

@H_502_4@第二个问题:当我在脚本中运行相同的代码时,我得到这个错误

import hashlib
a = hashlib.md5()
a.update('hi')
a.digest()
@H_502_4@追溯(最近呼叫最后):
文件“C:/ Users / User / Desktop / Logger / Encoding practice.py”,第3行
a.update( ‘HI’)
TypeError:Unicode散列之前必须对Unicode对象进行编码

@H_502_4@为什么代码在shell中工作而不是脚本?
我正在使用Windows和Python 3.4

@H_502_4@谢谢.

解决方法

因为你编码简单的字符串,我推断你正在运行Python 3,其中所有的字符串都是unicode对象,你有两个选择: @H_502_4@>提供字符串的编码,例如:“没有人检查”.encode(‘utf-8’)
>使用二进制字符串,如手册中所示:

m.update(b"Nobody inspects")
m.update(b" the spammish repetition")
@H_502_4@shell脚本中行为不同的原因是脚本停止在错误上,而在shell中,最后一行是单独的命令,但是由于上一个错误,仍然没有执行任何操作.

猜你在找的Python相关文章