Mongodb C ++ драйвер: строковое кодирование - PullRequest
2 голосов
/ 22 августа 2011

Во время работы над одним проектом c ++ мы решили использовать базу данных MongoDB для хранения некоторых данных нашего приложения. Я провел неделю, связывая и компилируя драйвер c ++, и теперь он работает. Но это одна проблема: строки типа

bob.append("name", "some text with cyrilic symbols абвгд");

добавлены неправильно и после извлечения из базы выглядят как 4-5 китайских символов.

Я не нашел документации по использованию юникода в mongodb, поэтому не могу понять, как записать юникод в базу данных.

1 Ответ

1 голос
/ 10 декабря 2011

Ваш пример и пример кода в руководстве по C ++ на mongodb.org отлично работают для меня в Ubuntu 11.10.Моя локаль - en_US.UTF-8, и я создаю исходные файлы UTF-8.

MongoDB хранит данные в BSON, а строки BSON - UTF-8 и UTF-8 может обрабатывать любой символ Unicode (включая кириллицу).Я думаю, что C ++ API предполагает, что строки имеют кодировку UTF-8, но я не уверен.

Вот несколько идей:

  • Если ваш код выше (bob.append("name" ..и т. д.) находится в файле исходного кода C ++, попробуйте кодировать этот файл как UTF-8.
  • Попробуйте вставить символы Unicode через оболочку mongodb.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...