以下 JSON 对象导致 CouchDB 插入 (POST)失败并显示"无效 JSON"消息这里的重音 É 是 UTF8
var o = JSON.stringify({"Éditeur": 123}); var httpOpts = { 主机名: "本地主机", 端口:5984, 路径: '/theDb', 方法:"开机自检", 标头:{ "内容类型": "应用程序/json", "内容长度":o.长度} } 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()
事实证明这不是 couchDB 的错,内容长度需要给定字节计数,不是字符数,这是JavaScript的string.length给你的,
使用以下函数计算字节数可以解决问题函数字节计数 { return encodeURI(s).split(/%..|./).长度 - 1;}