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,您也将数据存储为字节。
我正在使用 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,您也将数据存储为字节。