我正在使用mongo和mgo驱动程序在Mac上进行开发。
我的Mac上的一切都很棒。当我的朋友从他的Windows机器上使用相同的代码库时,我们得到这些奇怪的非utf-8 bson.ObjectIds。
以下是mongolab.com(托管的mongo服务器)的截图
我的代码只使用:
thing.Id = bson.NewObjectId()
thing.eventId = event.Id
有人有这个问题吗?有谁知道如何处理
编辑:此代码库中使用的所有bson函数均为:
thing.Id = bson.NewObjectId()
thing.Id = bson.ObjectIdHex(id)
idString = thing.Id.Hex()
感谢。
答案 0 :(得分:1)
屏幕截图中的Unicode替换字符表明应用程序将对象ID视为UTF-8编码文本。对象ID包含二进制数据,而不是UTF-8编码的文本。
使用Hex方法将对象ID转换为人类可读文本。
使用ObjectIdHex将十六进制字符串表示形式转换回对象ID。小心使用IsObjectIdHex保护对ObjectIdHex的调用。