Mongodb c ++驱动程序:字符串编码

时间:2011-08-22 15:27:01

标签: c++ unicode mongodb

在处理一个c ++项目期间,我们决定使用MongoDB数据库来存储我们应用程序的一些数据。我花了一周的时间来链接和编译c ++驱动程序,现在它的工作原理。但这是一个麻烦:像

这样的字符串
bob.append("name", "some text with cyrilic symbols абвгд");

添加错误,从数据库中提取后看起来像4-5个中文符号。

我没有找到关于在mongodb中使用unicode的文档,所以我无法理解如何将unicode写入数据库。

1 个答案:

答案 0 :(得分:1)

你的例子,example code in the C++ tutorial on mongodb.org在Ubuntu 11.10上对我很好。我的语言环境是en_US.UTF-8,我创建的源文件是UTF-8。

MongoDB将数据存储在BSON中,BSON strings are UTF-8和UTF-8可以处理任何Unicode字符(包括Cyrillic)。我认为C ++ API假设字符串是UTF-8编码的,但我不确定。

以下是一些想法:

  • 如果上面的代码(bob.append("name" ...等)位于C ++源代码文件中,请尝试将该文件编码为UTF-8。
  • 尝试通过mongodb shell插入Unicode字符。