Noa*_*ith 5 python google-app-engine google-cloud-datastore
我一直在尝试使用MD5哈希作为AppEngine上的密钥名称,但我写的代码引发了UnicodeDecodeError
from google.appengine.ext import db
import hashlib
key = db.Key.from_path('Post', hashlib.md5('thecakeisalie').digest())
Run Code Online (Sandbox Code Playgroud)
我不想使用,hexdigest()因为它不仅是一个kludge,而是一个劣等的(base64会做得更好).
vz0*_*vz0 12
App Engine Python文档说:
key_name存储为Unicode字符串(str值转换为ASCII文本).
密钥必须是unicode-encodeable-string.您需要将digest()调用更改为hexdigest(),即:
k = hashlib.md5('thecakeisalie').hexdigest()
Run Code Online (Sandbox Code Playgroud)
使用iso-8859-1解码字节串
>>> hashlib.md5('thecakeisalie').digest().decode("iso-8859-1")
u"'\xfc\xce\x84h\xa9\x1e\x8a\x12;\xa5\xb1K\xea\xef\xd6"
Run Code Online (Sandbox Code Playgroud)
这基本上是一个"NOP"转换.它创建一个Unicode对象,它是相同长度的初始字符串,可以仅仅通过转换回字符串.encode("iso-8859-1"),如果你想
| 归档时间: |
|
| 查看次数: |
5333 次 |
| 最近记录: |