加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:07:27 所属栏目:Python 来源:网络整理
导读:我是新的编码,并遇到一个问题,试图编码一个字符串. 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.
我是新的编码,并遇到一个问题,试图编码一个字符串.
>>> 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'xd4x1dx8cxd9x8fx00xb2x04xe9x80tx98xecxf8B~'

是(a)现在被认为是编码?

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

import hashlib
a = hashlib.md5()
a.update('hi')
a.digest()

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

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

谢谢.

解决方法

因为你编码简单的字符串,我推断你正在运行Python 3,其中所有的字符串都是unicode对象,你有两个选择:

>提供字符串的编码,例如:“没有人检查”.encode(‘utf-8’)
>使用二进制字符串,如手册中所示:

m.update(b"Nobody inspects")
m.update(b" the spammish repetition")

shell脚本中行为不同的原因是脚本停止在错误上,而在shell中,最后一行是单独的命令,但是由于上一个错误,仍然没有执行任何操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读