Google Cloud Datastore 中使用 Python3x 的 UTF-8 字符串?

UTF-8 strings in the Google Cloud Datastore using Python3x?

我正在使用 Pub/sub、云功能和数据存储。 用户通过 Pub/Sub 主题发送 JSON 格式的数据,然后这个 json 负载被云函数接收。对某些数据进行一些处理,然后将数据存储在 Datastore 中。

现在的问题是,有时云函数在 JSON 负载字符串中也会收到一些其他字符,例如

{'Data': 'ßTest'} #Already converted into UTF-8 by the user

所以,当我这样做时..

data = pubsub_message['Data']
print(data) # OUTPUT :=> 'ßTest'
print(type(data)) # OUTPUT :=> #'str'
data.decode('utf-8')

decode 给出了 str 没有 decode 的异常,这是有道理的,因为它的类型是 'str'.

现在我正在做的是将它编码为 utf-8。

d=data.encode('utf-8')

返回类型为 'BYTES' 的 d。然后我将它存储在数据存储中。 现在,当我签入数据存储时,它是一个复杂的字符串,类型为 Blob。

现在我的问题 is.Can 我将它按原样存储在数据存储区中而不在 'utf-8' 中编码?或者在 DATASTORE 中以 BLOB 格式编码 'utf-8' 可以吗?

正如Best practices所说:

Always use UTF-8 characters for properties of type string. A non-UTF-8 character in a property of type string could interfere with queries. If you need to save data with non-UTF-8 characters, use a byte string.

意味着您必须以 UTF-8 或字节字符串的形式存储数据。

对于Blob,您也将数据存储为字节。