以下JSON对象导致CouchDB插入(POST) 以“无效的JSON”消息失败 重音Éhere 是 UTF8
var o = JSON.stringify({"Éditeur": 123}); var httpOpts = { hostname: "localhost", port: 5984, path: '/theDb', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': o.length} } var req = http.request(httpOpts, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); req.write(o) req.end()
答案 0 :(得分:0)
事实证明这不是couchDB的错, Content-Length需要给出字节数, 不是字符数,这是JavaScript的string.length给你的,
使用下面的函数来计算字节数来解决问题 function byteCount(s){ return encodeURI(s).split(/%.. |。/)。length - 1; }