CouchDB与特殊字符

CouchDB与特殊字符,couchdb,special-characters,Couchdb,Special Characters,问题…我正试图通过_bulk_docs API向CouchDB添加数据。在大多数情况下,我都能做到这一点,但任何包含特殊字符(例如,我的数据中存在某些西班牙语或法语字符)的JSON值都会导致CouchDB给出的“无效JSON”错误,并且数据会被拒绝 我不确定我需要设置什么才能让它工作。有什么建议吗?CouchDB似乎正确地获取了数据(至少在其日志文件中看起来是正确的),但除非我删除特殊字符,否则它不会被处理。内容类型应该是application/json,而不是test/plain 我不熟悉您的

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


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

内容类型应该是application/json,而不是test/plain


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

我会尝试通过以下方式调试问题:

  • 在您的计算机上安装理解http(例如)的数据包嗅探器,并启动它捕获发送到端口5984的数据包
  • 从命令行使用curl创建文档:

    curl-X柱-d@test.js

    其中test.js包含一些带有特殊字符的文档。看看这是否如预期的那样有效

  • 对java库执行同样的操作,并在这两种情况下查看http头和请求体的差异
  • 注意:默认情况下,curl应该发送内容类型为application/x-www-form-urlencoded的数据,这可能是问题所在,但请检查标题,因为我不确定


    希望这能对您有所帮助。

    CouchDB支持Unicode字符,因此特殊字符应该没有问题。您使用什么库/工具与CouchDB对话?问题可能就在那里,现在我正在从Javaservlet调用URL。我创建了一个指向CouchDB数据库的URL对象,并将HttpURLConnection的内容类型设置为“text/plain;charset=utf-8”。我还使用Jackson(使用writeValueAsString()方法)创建发送到CouchDB的JSON字符串。谢谢!这一切都很有帮助……它现在正在发挥作用。Jetty/Comed、CouchDB和Jackson之间的基于JQuery的客户端web应用都在谈论:)