我已经安装了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" }
提前致谢
答案 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");