使用 Javascript 在 MongoDB 中使用希腊字符执行查询不会返回任何结果
Executing Queries in MongoDB with Greek Characters using Javascript Returns No Results
我正在构建一个结合了AngularJS框架和MongoDB的HTML5应用程序。该设置类似于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 发布,请确保在发送之前也设置了字符编码。像这样的东西?http://groups.google.com/group/angular/browse_thread/thread/e6701e749d4bc8ed
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 在node.js-mysql中执行UPDATE查询不起作用
- onchange选择get value并执行查询,然后在同一页面上显示结果
- AJAX 请求不会在 400 个错误查询上执行失败
- 根据浏览器屏幕大小和媒体查询执行 php 代码
- 只有选中的复选框才能执行进一步的 ajax 查询
- SQLite+Javascript:在每个其他函数中执行多个查询
- 如何使用MongoDB执行具有“hasmany”关联的查询
- mongoose中嵌套查询执行的问题
- 我如何才能实时查看在Postgres上执行的查询
- Firebase-如何在列表查询中执行where项
- 节点.js MySQL 查询执行流程
- Javascript引擎(或其他可嵌入语言),用于类似mongodb的查询执行环境和多线程
- 如何使用PHP / JavaScript从客户端停止SQL查询执行
- 查询执行时间超过超时时发生ExtJS Catch事件
- node.js+用于循环+查询执行
- 如何使webEnumerator.moveNext等待executeQueryAsync查询执行
- 节点.js + 续集 + 查询执行
- 在从CFC返回结果之前,对AJAX查询执行字符串函数
- PHP查询执行无错误,但返回计数0