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

问题描述 投票:0回答:1

我完全使用发布/订阅,云功能和数据存储。用户通过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'可以吗?

python-3.x string utf-8 google-cloud-functions google-cloud-datastore
1个回答
0
投票

正如Best practices所说:

对于字符串类型的属性,始终使用UTF-8字符。非UTF-8字符串类型的属性中的字符可能会干扰查询。如果需要使用非UTF-8字符保存数据,请使用字节字符串。

意味着您必须将数据存储为UTF-8或作为字节字符串。

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

© www.soinside.com 2019 - 2024. All rights reserved.