Веб-сайт может возвращать кодировку содержимого в заголовке типа содержимого или метатег типа содержимого в возвращенном HTML, например:
<meta http-equiv="Content-Type" content="text/html; charset=latin1"/>
Вы можете использовать модуль charset , чтобы автоматически проверить оба из них для вас. Однако не все веб-сайты или серверы будут указывать кодировку, поэтому вы захотите найти кодировку по самим данным. Модуль jschardet может помочь вам в этом.
После того, как вы поработали с кодировкой, вы можете использовать модуль iconv для выполнения фактического преобразования. Вот полный пример:
request({url: 'http://www.myurl.com/', encoding: 'binary'}, function(error, response, html) {
enc = charset(response.headers, html)
enc = enc or jchardet.detect(html).encoding.toLowerCase()
if enc != 'utf-8'
iconv = new Iconv(enc, 'UTF-8//TRANSLIT//IGNORE')
html = iconv.convert(new Buffer(html, 'binary')).toString('utf-8')
console.log($('title', html).text());
});