2010-09-27 4 views
1

code:Node.js cadre Nerve réponse unicode

var nerve = require("./nerve"); 
var sitemap = [ 
    ["/", function(req, res) { 
     res.respond("Русский"); 
    }] 
]; 
nerve.create(sitemap).listen(8100); 

show dans le navigateur:

CAA:89 

Comment ça devrait être correct?

Répondre

5

Nerve appears interprète les chaînes que vous transmettez en tant que chaînes binaires, ce qui entraîne la sortie que vous voyez. Vous pouvez utiliser la classe Buffer pour convertir vos caractères UTF-8 en une chaîne binaire manuellement. Vous devez également définir le jeu de caractères dans vos têtes:

var sitemap = [ 
    ["/", function (req, res) { 
    res.respond({ 
     headers: {"Content-Type": "text/html; charset=utf-8"}, 
     content: new Buffer("Русский", "utf8").toString("binary") 
    }); 
    }] 
]; 

Si vous voulez essayer un autre cadre, Express fait un meilleur UTF-8 Gestion des emplois. Il interprète les chaînes comme UTF-8 et définit correctement le jeu de caractères par défaut:

var app = require("express").createServer(); 

app.get("/", function (req, res) { 
    res.send("Русский"); 
}); 

app.listen(8100); 
+0

Oh cher. Et à partir de ce lien git, Nerve semble également avoir une injection de code HTML dans la page d'erreur. Oups. Pas très bien. – bobince