如何在mongodb数据库中存储特殊字符?

时间:2013-08-13 21:32:42

标签: php linux mongodb

我已经安装了mongodb 2.4.5版本并且正常使用linux CENTOS,但是当我尝试插入特殊字符时,我遇到了一个问题,如下例所示。

使用PHP我做了以下...

$con = new MongoClient(); //connect

$db = $con->selectDB('test');
$dbs = $db->titles; //Set to titles collection
$dbs->insert(array('name' => 'televisión')); //Inserts the item into the titles collection

但是在mongodb数据库服务器保存如下

> db.titles.find()
{ "name" : "televisi��n" }

我想知道是否有办法将带有特殊字符的数据存储到数据库中,即{ "name" : "televisión" }

提前致谢

2 个答案:

答案 0 :(得分:1)

基于mb_detect_encoding()"televisión"似乎是一个UTF-8字符串,因此在MongoDB中存储它时不应该有任何问题。实际上,我能够将它作为键和值插入数据库,从PHP和JavaScript shell中插入。

您是否能够插入文档并使用PHP检索它?您的示例仅显示插入步骤。请考虑以下脚本:

$name = 'televisión';

$m = new MongoClient();
$c = $m->test->titles;
$c->insert(['name' => $name]);
var_dump($c->findOne(['name' => $name]));

此脚本在我的系统上打印以下内容:

array(2) {
  '_id' =>
  class MongoId#6 (1) {
    public $$id =>
    string(24) "5213c3dbe84df10121873458"
  }
  'name' =>
  string(11) "televisión"
}

此外,我可以在JavaScript shell中查询相同的文档:

> db.titles.find({name: "televisión"})
{ "_id" : ObjectId("5213c3dbe84df10121873458"), "name" : "televisión" }

您的终端可能无法显示UTF-8字符。

答案 1 :(得分:0)

我只是遇到了与拉丁字符(çãóéé...)相同的问题但是使用了Node.js.以下是我解决这个问题的方法:

JavascriptString.toString("utf8");