mongodb插入显示文档中的字符串必须是有效的UTF-8'

时间:2014-03-18 09:09:36

标签: python mongodb utf-8

这是我的代码

        for code, data in dict_data.items(): 

            try:
                collection2.insert({'_id':code,'data':data})

            except Exception as e:
                print code,'>>>>>>>', str(e)
                sys.exit()

退出

         524715 >>>>>>> strings in documents must be valid UTF-8

我只能通过try catch方法找出错误。 dict_data是一个包含其他集合计算值的大型字典。

我该如何解决这个问题?

感谢

1 个答案:

答案 0 :(得分:4)

如果您使用的是PyMongo和Python 2.x,则应该在utf-8或unicode字符串中使用str。看到: http://api.mongodb.org/python/current/tutorial.html#a-note-on-unicode-strings

如果data是一个包含多个字符串的字典,您可以使用以下函数将它们全部转换为unicode:

def convert2unicode(mydict):
    for k, v in mydict.iteritems():
        if isinstance(v, str):
            mydict[k] = unicode(v, errors = 'replace')
        elif isinstance(v, dict):
            convert2unicode(v)

for code, data in dict_data.items(): 
    try:
        convert2unicode(data)
        collection2.insert({'_id':code,'data': data})
    except Exception as e:
        print code,'>>>>>>>', str(e)
        sys.exit()

以前的代码会转换unicode中的所有str值,“keys”保持不变,这取决于根本原因你还应该转换“keys”。

相关问题