首先,我要注意我是所有这些nodejs的新手。 也许问题不值得使用任何字节 - 但让我们看看。
我正在尝试在网站上获取一些数据。 请看这里我的代码片段:
app.get('/scrape', function (req, res) {
request({
uri: 'http://www.admin.ch/index.php',
}, function (err, response, body) {
var self = this;
self.items = new Array();
if (err && response.statusCode !== 200) {
console.log('Request error.');
}
//jsdom please attach jQuery in the scripts
jsdom.env({
html: body,
scripts: ['http://code.jquery.com/jquery-2.1.1.min.js'],
done: function(errors, window) {
var $ = window.jQuery;
$body = $('body'),
$threads = $body.find('a:not([href$=\'958206\'])');
$threads.each(function (i, item) {
self.items[i] = {
href: $(item).attr('href'),
title: $(item).text().trim(),
urlObj: url.parse($(item).attr('href'), true)
};
});
//render a view
res.render('list', {
layout: 'layout.jade',
title: 'Admin YourSelf',
items: self.items
});
}
});
});
});
到目前为止,一切都正常运作。 唯一的问题是我无法获得正确的数据编码。
Duh ttestortortStenmplatz auf immer(o.T。)
应该
Duhättestortnen Stammplatz auf immer(o.T。)
任何想法如何解决这个问题?
先谢谢你和鱼, sCHween
答案 0 :(得分:1)
您可以使用iconv-lite转换ISO-8859-1:
var request = require("request");
var iconv = require('iconv-lite');
request({
encoding: null,
uri: 'http://www.admin.ch/index.php',
}, function (err, response, body) {
var Utf8String = iconv.decode(new Buffer(body), "ISO-8859-1");
});