Как преобразовать данные в utf-8 в node.js? - PullRequest
8 голосов
/ 19 апреля 2011

Я использую node.js с экспрессом.Я считываю данные из MongoDB с помощью Mongoose и доставляю их обычным способом с res.send(data).К сожалению, доставка не удается для некоторых запросов.Несмотря на то, что заголовок говорит, что кодировка utf-8, в некоторых случаях она выглядит как ANSI, что приводит к сбою функции обратного вызова jsonp с ошибкой.

Вы можете воспроизвести ошибку на этой странице:http://like -my-style.com / #! Single / 9837034 .Вызов jsonp не работает только на некоторых продуктах, большинство из них (в том числе со специальными символами) работают нормально.

Как я могу убедиться, что данная строка зашифрована в utf-8 в node.js?

Ответы [ 3 ]

7 голосов
/ 14 июня 2011

Вы пробовали:

res.send(data.toString("utf8"));

Чтобы убедиться, что ваши данные находятся в utf8 и не в буфере.

1 голос
/ 13 июля 2011

Я думаю, что застрял в аналогичной проблеме, и решение neebz сработало, но мне пришлось поставить его в нужное место.

var req = http.request(options, function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);
  **res.setEncoding(encoding='utf8');** 
  res.on('data', function(d) {
    console.log(d);
  });
});

В файле node.js это задокументировано как request.setEncoding ()что может быть ошибкой, потому что его нужно вызывать для объекта res, созданного запросом.

0 голосов
/ 19 апреля 2011

Вы устанавливаете тип кодировки

res.setEncoding('utf8');

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