CouchDB和特殊字符

时间:2010-01-10 09:02:05

标签: couchdb special-characters

问题...我正在尝试通过_bulk_docs API向CouchDB添加数据。在大多数情况下,我有这个工作,但任何包含特殊字符的JSON值(例如我的数据中存在某些西班牙语或法语字符)会导致CouchDB给出“无效的JSON”错误,并且数据被拒绝。

我不确定我需要设置什么才能让它工作。有什么建议? CouchDB似乎正确地获取数据(至少它在日志文件中看起来是正确的),但除非我删除特殊字符,否则它不会被处理。

2 个答案:

答案 0 :(得分:0)

content-type应该是application / json,而不是test / plain

我不熟悉你的JSON解析器,但要确保它是utf-8,因为你的http客户端库设置为utf-8并不意味着你的json序列化器输出unicode。

答案 1 :(得分:0)

我会尝试调试这样的问题:

  1. 在您的计算机上安装一个了解http的数据包嗅探器(例如wireshark)并启动它捕获发送到端口5984的程序包
  2. 使用命令行中的curl创建文档:

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

    其中test.js包含一些带有特殊字符的文档。并查看这是否按预期工作。

  3. 对java库执行相同的操作,并在2种情况下查看http标头和请求主体的差异。
  4. 注意:默认情况下curl应该使用content-type:application / x-www-form-urlencoded发送数据,这可能是问题,但检查标题是因为我不确定。

    希望这可以帮到你。