couchdb不喜欢json doc中的重音字符

时间:2013-09-17 19:39:30

标签: couchdb

以下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()

1 个答案:

答案 0 :(得分:0)

事实证明这不是couchDB的错, Content-Length需要给出字节数, 不是字符数,这是JavaScript的string.length给你的,

使用下面的函数来计算字节数来解决问题 function byteCount(s){     return encodeURI(s).split(/%.. |。/)。length - 1; }