import hashlib
string1 = u'test'
hashstring = hashlib.md5()
hashstring.update(string1)
string2 = hashstring.digest()
unicode(string2)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8f in position 1: ordinal
not in range(128)
字符串必须是unicode才能对我有用,可以吗? 使用Python2.7如果有帮助。。。
伊格纳西奥刚刚给出了完美的答案。只是一个补充:将某些字符串从ASCII中没有字符的编码转换为unicode时,必须将编码作为参数传递:
如果你不能说出什么是原始编码(在我的例子中是UTF-8),你就真的不能转换成Unicode。这是一个信号,表明你的意图不太正确。
最后但并非最不重要的是,编码是相当混乱的东西。这个comprehensive text about them可以让他们明白。
.digest()
的结果是一个bytestring,因此将其转换为Unicode是没有意义的。如果需要可读的表示,请使用.hexdigest()
。有些bytestrings可以转换为Unicode,但是
.digest()
返回的bytestrings不包含文本数据。它们可以包含任何字节,包括空字节:如果不使用转义序列,它们通常是不可打印的。相关问题 更多 >
编程相关推荐