2014-06-19 5 views
0

d'abord je dois noter que je suis nouveau à tous ces trucs nodejs. Peut-être que la question ne vaut pas la peine d'utiliser des octets - mais laisse voir. J'essaie d'aller chercher des données sur un site. Voir ici mon bout de code pour le faire:nodejs avec express et demande comment supporter 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 
     }); 
     } 
    }); 
}); 

}); 

Jusqu'à présent, tout fonctionne comme il se doit. La seule chose est que je ne peux pas obtenir le bon encodage pour les données.

Du httest Dort nen Stammplatz auf immer (o.T.)

shoulb être

Du hättest Dort nen Stammplatz auf immer (o.T.)

toute idée comment cette question pourrait être résolue?

Merci à l'avance et pour les poissons, SCHWEEN

Répondre

1

Vous pouvez utiliser iconv-lite convertir 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"); 
}); 
Questions connexes