我完全使用发布/订阅,云功能和数据存储。用户通过Pub / Sub主题以JSON格式发送数据,然后Cloud函数正在接收此json有效负载。对某些数据进行了一些处理,然后将数据存储在数据存储中。
现在的问题是,有时Cloud函数会在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没有解码的异常,这是有道理的,因为它的类型是'str'。
现在我正在做的是将其编码为utf-8。
d=data.encode('utf-8')
哪个给我d作为'BYTES'类型。然后将其存储在数据存储区中。现在,当我签入数据存储时,它是一个奇怪的字符串,类型为Blob。
现在我的问题是。我可以将其按原样存储在数据存储区中而不用'utf-8'进行编码吗?还是在DATASTORE中以BLOB格式编码'utf-8'可以吗?
正如Best practices所说:
对于字符串类型的属性,始终使用UTF-8字符。非UTF-8字符串类型的属性中的字符可能会干扰查询。如果需要使用非UTF-8字符保存数据,请使用字节字符串。
意味着您必须将数据存储为UTF-8或作为字节字符串。
对于Blob,您也将数据存储为字节。