CouchDB и специальные символы - PullRequest
1 голос
/ 10 января 2010

Вопрос ... Я пытаюсь добавить данные в CouchDB через API _bulk_docs. По большей части это работает, но любое значение JSON, которое содержит специальный символ (например, в моих данных присутствуют определенные испанские или французские символы), приводит к ошибке «неверный JSON», выданной CouchDB, и данные отклоняются. *

Я не уверен, что мне нужно установить, чтобы заставить это работать. Какие-либо предложения? CouchDB, кажется, получает данные правильно (по крайней мере, они выглядят правильно в своем файле журнала), но они не обрабатываются, пока я не удалю специальные символы.

Ответы [ 2 ]

0 голосов
/ 11 января 2010

Я бы попытался отладить проблему, выполнив что-то вроде этого:

  1. установите на своем компьютере анализатор пакетов, который распознает http (например, wireshark ), и запустите его, захватывая пакеты, отправленные на порт 5984
  2. Создание документов с помощью curl из командной строки:

    curl -X POST -d@test.js http://localhost:6984/testdb/_bulk_docs

    где test.js содержит некоторые документы со специальными символами. И посмотрите, работает ли это так, как ожидалось.

  3. проделайте то же самое с библиотекой java и просмотрите различия в заголовках http и теле запроса в 2 случаях.

ПРИМЕЧАНИЕ: curl по умолчанию должен отправлять данные с типом содержимого: application / x-www-form-urlencoded, и это может быть проблемой, но проверьте заголовки, потому что я не уверен.

Надеюсь, это поможет вам.

0 голосов
/ 11 января 2010

тип содержимого должен быть application / json, а не test / plain

Я не знаком с вашим анализатором JSON, но убедитесь, что это utf-8, просто потому, что ваша клиентская библиотека http установлена ​​на utf-8, не означает, что ваш сериализатор json выводит Unicode.

...