javascript - 使用 Javascript 在 MongoDB 中执行带有希腊字符的查询不返回任何结果

标签 javascript mongodb utf-8 angularjs

我正在构建一个结合 AngularJS 框架和 MongoDB 的 HTML5 应用程序。设置类似于 ‘Wire up a backend’ AngularJS 主页中的演示。到目前为止,我已经成功地将大量文档保存在一个结构简单的 MongoDB 集合(托管在 Mongolab 上)中。这些文档包含带有拉丁字符的键和带有希腊字符或数字的值:

{ "name": "Νίκος", "value": 1.35}

我很确定这些文档是 utf-8 编码的。问题是,当我尝试使用 JS 查询数据库并传递包含希腊字符的字符串时,我得到零结果。

var queryString = "{\"name\": \"Νίκος\"}";
$scope.query_results = Project.query({q: query_string}, null, $scope.query_success);

使用 php 的相同查询会返回正确的结果。所有其他包含数值或拉丁字符的查询均已成功执行(来自 php 或 js)。所以唯一的问题是当我尝试使用希腊字符通过js查询数据库时。

我已检查js文档的编码为utf-8,并将html元字符集属性设置为utf-8。我还尝试在查询数据库之前将查询字符串编码为 utf-8,但没有成功。

有什么想法吗? 谢谢。

最佳答案

从 shell 为我工作(我复制了要插入的示例文档,然后从名称查询中复制),所以至少您不会遇到 utf-8 字符看起来相同但略有不同:

> db.test.insert({ "name": "Νίκος", "value": 1.35});
> db.test.find({name: "Νίκος"});
{ "_id" : ObjectId("4f9b1642c26c79dac82740c5"), "name" : "Νίκος", "value" : 1.35 }

仔细检查 js 文件的文件编码?不过,我确信在您的实际程序中,您的搜索值来自通过 GET 或 POST 进行的 URL 编码形式,因此 js 文件上的编码并不重要。

您可以尝试在表单中设置accept-charset="utf-8"。如果它是 AJAX 或通过 JS 通过 Angular 绑定(bind)发布,请确保在发送之前设置字符编码。像这样的东西吗? http://groups.google.com/group/angular/browse_thread/thread/e6701e749d4bc8ed

关于javascript - 使用 Javascript 在 MongoDB 中执行带有希腊字符的查询不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358302/

相关文章:

javascript - 自动增加mongodb中的一个字段

java - 即使使用 UTF-8,为什么 ¿ 在 Windows 和 Linux 中显示不同?

iphone - 在 iPhone 中使用 UTF-8 进行编码和解码

mongodb - 如何从命令行删除 MongoDB 数据库?

javascript - CSS float 菜单

javascript - 如何绑定(bind)点击触发器,只绑定(bind)到点击的元素?

javascript - 单击功能不适用于我的所有文件

javascript - 导出在 JavaScript 中如何工作。哈希未定义 bcryptjs

html - 为什么 <?xml version ="1.0"encoding ="UTF-8"?> 不应该放在最上面?

javascript - 在浏览器插件中使用带有自定义事件的 YUI 3 Event