App Engine ndb StringProperty和字符串哈希

时间:2013-04-25 16:25:54

标签: python google-app-engine

我正在使用PyCrypto生成安全密钥哈希。我想存储一个或多个我生成的部分键。每个部分密钥的格式为

\x0f|4\xcc\x02b\xc3\xf8\xb0\xd8\xfc\xd4\x90VE\xf2

我有一个ndb StringProperty(),我会在其中存储该信息。但是,它提出了BadValueError说它期望UTF-8编码的字符串。我尝试使用str的.encode('uft-8')方法,但这也引发了一个错误,告诉我它无法编码,因为定位不好。

无论如何,我的问题是,如何将该字节字符串转换为可以存储在ndb中的字符串?

1 个答案:

答案 0 :(得分:2)

改进答案:

在这种情况下,不应将密钥存储为字符串或文本,而应使用存储未解释的字节字符串的BlobProperty

原始答案:

要将字节(字符串)转换为unicode,请使用方法decode。您还需要使用保留原始二进制数据的编码,即ISO-8859-1。见ISO-8859-1 encoding and binary data preservation

unicode_key = key.decode('iso-8859-1')
bytes_key = unicode_key.encode('iso-8859-1')

考虑使用A TextProperty,因为StringProperties已编入索引。