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

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

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

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

  1. import hashlib
  2. a = hashlib.md5()
  3. a.update('hi')
  4. 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’)
>使用二进制字符串,如手册中所示:

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

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

猜你在找的Python相关文章