Как опубликовать не-ascii данные в Campfire? - PullRequest
0 голосов
/ 05 октября 2011

Вот тестовое приложение Node.js:

body = {
    "message": {
        "body": "hello", //it works
        // "body":"привет", //doesn't work
        "type":"TextMessage"
    }
};

body = JSON.stringify(body);

headers = {
    'Authorization': 'Basic ' + B64TOKEN,
    'Host': SUBDOMAIN + '.campfirenow.com',
    'Content-Type': 'application/json; charset=UTF-8',
    'Content-Length': body.length
}

opts = {
    host: SUBDOMAIN + '.campfirenow.com',
    port: 443,
    method: 'POST',
    path: '/room/' + TEST_ROOM + '/speak.json',
    headers: headers
}

request = require('https').request(opts, function(response) {
    var data;
    data = '';
    response.setEncoding('utf8');
    response.on('data', function(chunk) {
        return data += chunk;
    });
    return response.on('end', function() {
        console.log("===== start responce");
        console.log(data);
        console.log("===== end responce");
    });
  });

request.end(body);

body карта - это то, что я хочу отправить. И вы можете видеть, что с "hello" он работает (т.е. сообщение отправлено в чат Campfire), но с "привет" в качестве тела - возникает ошибка ... Во втором случае я получил длинный ответ html от Campfire ... I думаю, что это можно решить, если я могу отправить body в строке последовательности Unicode ... Как это: "body":"\u043f\u0440\u0438\u0432\u0435\u0442" но как?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Я (и вы) должны сделать это, если вам нужно ответить utf-8:

body = JSON.stringify(body);
buf = new Buffer(body);

headers = {
    'Authorization': 'Basic ' + B64TOKEN,
    'Host': SUBDOMAIN + '.campfirenow.com',
    'Content-Type': 'application/json; charset=UTF-8',
    'Content-Length': buf.length
}
// ...
request.end(buf);

Вам нужно использовать буфер. Таким образом, это работает просто отлично.

0 голосов
/ 05 октября 2011

Hej request.end принимает аргумент кодирования http://nodejs.org/docs/v0.4.12/api/streams.html

установите что-то, поддерживающее ваших персонажей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...