jba*_*ski 12 python unicode unicode-string
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)
Run Code Online (Sandbox Code Playgroud)
字符串HAS是unicode,它对我有用,可以这样做吗?使用python 2.7如果有帮助...
bra*_*zzi 21
伊格纳西奥给出了完美的答案.只是一个补充:当你将一些字符串从一个在ASCII中找不到字符的编码转换为unicode时,你必须将编码作为参数传递:
>>> unicode("órgão")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
>>> unicode("órgão", "UTF-8")
u'\xf3rg\xe3o'
Run Code Online (Sandbox Code Playgroud)
如果你不能说原始编码是什么(在我的例子中是UTF-8)你实际上无法转换为Unicode.这是一个信号,表明某些事情在你的意图中并不是很正确.
最后但并非最不重要的,编码是相当混乱的东西.这篇关于它们的全面文本可以使它们清楚.
Ign*_*ams 11
结果.digest()
是bytestring¹,因此将其转换为Unicode是没有意义的..hexdigest()
如果您想要可读的表示,请使用.
¹有些字节串可以转换为Unicode,但返回的字节串.digest()
不包含文本数据.它们可以包含任何字节,包括空字节:如果不使用转义序列,它们通常是不可打印的.