Golang mgo MongoDB bson.ObjectId非utf-8错误

时间:2015-03-15 17:13:16

标签: mongodb utf-8 go mgo

我正在使用mongo和mgo驱动程序在Mac上进行开发。

我的Mac上的一切都很棒。当我的朋友从他的Windows机器上使用相同的代码库时,我们得到这些奇怪的非utf-8 bson.ObjectIds。

以下是mongolab.com(托管的mongo服务器)的截图

enter image description here

我的代码只使用:

thing.Id = bson.NewObjectId() 
thing.eventId = event.Id

有人有这个问题吗?有谁知道如何处理

编辑:此代码库中使用的所有bson函数均为:

thing.Id = bson.NewObjectId()
thing.Id = bson.ObjectIdHex(id)
idString = thing.Id.Hex()

感谢。

1 个答案:

答案 0 :(得分:1)

屏幕截图中的Unicode替换字符表明应用程序将对象ID视为UTF-8编码文本。对象ID包含二进制数据,而不是UTF-8编码的文本。

使用Hex方法将对象ID转换为人类可读文本。

使用ObjectIdHex将十六进制字符串表示形式转换回对象ID。小心使用IsObjectIdHex保护对ObjectIdHex的调用。