bson字符串写为:int32 (byte*) "\x00"
规格如下:The int32 is the number bytes in the (byte*) + 1 (for the trailing '\x00'). The (byte*) is zero or more UTF-8 encoded characters.
但是为什么使用结尾的零字节?如果我们使用utf-8编码的字符串长度,则对于字节数据工作流程就足够了,0x00字节仅添加了不需要的字节。我想念什么吗?
Spec指出byte*
是zero or more characters
,因此,我猜这是因为某些空字符串(例如""
)将被保存为数据类型(仅1个字节)而没有尾随数据x00,然后数据元素将尝试将下一个元素解码为字符串。
但是那为什么还要保存空字符串呢?在数据库中为损坏的用例添加一个字节,用于每个字符串?谁想要保存空字符串!