从pymongo文档:

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

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

最佳答案

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

在即将发布的PyMongo 3.x系列中,我们可能会添加一些功能,以实现更灵活的BSON解码,以允许开发人员优化像这样的不常见用例。

关于pymongo - 如何获取pymongo始终返回str而不是unicode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18103497/

10-16 14:23