2012-04-27 2 views
1

Я строй приложения HTML5, сочетающие рамки AngularJS и MongoDB. Настройка похожа на демо-версию ‘Wire up a backend’ на домашней странице AngularJS. До сих пор мне удалось сохранить большое количество документов в одной простой структурированной коллекции MongoDB (размещенной на Mongolab). Эти документы содержат ключи латинских символов и значений с греческими символами или числовыми:Выполнения запросов в MongoDB с греческими символами с использованием Javascript Нет результаты

{ "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). Поэтому единственная проблема заключается в том, что я пытаюсь запросить db через js, используя греческие символы.

Я проверил кодировку документов js как utf-8, и я установил атрибут html meta charset в utf-8. Я также попытался кодировать строку запроса в utf-8 перед тем, как запросить базу данных, но не успел.

Любые идеи? Спасибо.

ответ

0

Работает для меня из оболочки (я скопировал ваш примерный документ для вставки, а затем скопировал из запроса для имени), так что по крайней мере у вас нет одной из тех проблем, где символы utf-8 выглядят одинаково но несколько отличаются:

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

Двойная проверка кодировки файла в файле js? Хотя, я уверен в вашей реальной программе, у вас есть значение поиска, исходящее из URL-кодированной формы через GET или POST, поэтому кодировка в файле js не имеет значения.

Вы можете попробовать установить accept-charset="utf-8" в вашу форму. Если это AJAX или отправлено через JS через угловые привязки, убедитесь, что кодировка символов установлена ​​до того, как вы ее отправите. Что-то вроде этого? http://groups.google.com/group/angular/browse_thread/thread/e6701e749d4bc8ed

Смежные вопросы