4

来自 pymongo 文档:

MongoDB 以 BSON 格式存储数据。BSON 字符串是 UTF-8 编码的,因此 PyMongo 必须确保它存储的任何字符串都只包含有效的 UTF-8 数据。常规字符串 () > 已验证并按原样存储。Unicode 字符串 () 首先是 UTF-8 编码的。> 我们的示例字符串在 Python shell 中表示为 u'Mike' 而不是 'Mike' 的原因是 PyMongo 将每个 BSON 字符串解码为 Python unicode 字符串,而不是常规 str。”

对我来说数据库只能存储 UTF-8 编码的字符串似乎有点傻,但是 pymongo 中的返回类型是 unicode,这意味着我对文档中的每个字符串要做的第一件事就是再次调用 encode('utf -8') 就可以了。有没有办法解决这个问题,即告诉 pymongo 不要给我 unicode 而是给我原始的 str?

4

1 回答 1

2

不,PyMongo 中没有这样的功能;从 BSON 解码的每个字符串都被解码为 UTF-8。Python 在内部将字符串表示为 UCS-2 或其他格式,具体取决于 Python 版本。请参阅BSON 解码器提取字符串的代码

在即将到来的 PyMongo 3.x 系列中,我们可能会添加更灵活的 BSON 解码功能,以允许开发人员优化此类不常见的用例。

于 2014-05-30T13:37:35.190 回答