2014-06-19 36 views
0

首先我必須注意,我是所有這些nodejs的東西的新手。 也許問題是不值得使用任何字節 - 但讓我們看看。nodejs與快遞和請求如何支持utf8

我試圖在網站上獲取一些數據。 看到這裏我的代碼片段來做到這一點:

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 
     }); 
     } 
    }); 
}); 

}); 

到目前爲止一切正常,因爲它應該。 唯一的問題是我無法獲得正確的數據編碼。

杜httest多特嫩Stammplatz奧夫音麥(O.T.)

shoulb是

杜hättest多特嫩Stammplatz奧夫音麥(O.T.)

任何想法,這個問題如何解決?

提前感謝和魚, sCHween

回答

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"); 
});