首页 文章

如何让pymongo始终返回str而不是unicode?

提问于
浏览
3

来自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?

1 回答

  • 1

    不,PyMongo中没有这样的功能;从BSON解码的每个字符串都被解码为UTF-8 . Python在内部将字符串表示为UCS-2或其他格式,具体取决于Python版本 . 见code where the BSON decoder extracts a string .

    在即将推出的PyMongo 3.x系列中,我们可能会添加更灵活的BSON解码功能,以便开发人员可以优化这种不常见的用例 .

相关问题