2011-08-22 10 views
2

Lors du travail sur un projet C++, nous avons décidé d'utiliser la base de données MongoDB pour stocker certaines données de notre application. J'ai passé une semaine à relier et à compiler le driver C++, et ça marche maintenant. Mais il est l'un des problèmes: les chaînes commePilote Mongodb C++: codage de chaîne

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

sont ajoutés de manière incorrecte et après l'extraction de regarder la base de données comme 4-5 symboles chinois.

Je n'ai trouvé aucune documentation sur l'utilisation d'unicode dans mongodb, donc je ne peux pas comprendre comment écrire unicode dans la base de données.

Répondre

1

Votre exemple, et le example code in the C++ tutorial on mongodb.org fonctionne très bien pour moi sur Ubuntu 11.10. Mon environnement local est en_US.UTF-8 et les fichiers source que je crée sont UTF-8.

MongoDB stocke les données dans BSON, et BSON strings are UTF-8, et UTF-8 peut gérer n'importe quel caractère Unicode (y compris cyrillique). Je pense que l'API C++ suppose que les chaînes sont codées en UTF-8, mais je ne suis pas sûr.

Voici quelques idées:

  • Si votre code ci-dessus (bob.append("name" ... etc) est dans un fichier de code source C++, essayez de l'encodage ce fichier comme UTF-8.
  • Essayez d'insérer des caractères Unicode via le shell mongodb.