Node.JS web sunucusunu kullanırken POST verilerinde UTF-8 dizelerinin kodunu çözme sorunları yaşıyorum.node.js ve POST verisinde utf-8
require("http").createServer(function(request, response) {
if (request.method != "POST") {
response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
response.end('<html>'+
'<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>'+
'<body>'+
'<form method="post">'+
'<input name="test" value="Grüße!"><input type="submit">'+
'</form></body></html>');
} else {
console.log("CONTENT TYPE=",request.headers['content-type']);
var body="";
request.on('data', function (data) {
body += data;
});
request.on('end', function() {
console.log("POST BODY=",body);
response.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
response.end("POST DATA:\n"+body+"\n---\nUNESCAPED:\n"+unescape(body)+
"\n---\nHARDCODED: Grüße!");
});
}
}).listen(11180);
Bu port 11180 dinler ve özel karakterler ile bir giriş alanı içeren basit formu ile bir HTML sayfası gönderir bağımsız bir web sunucusudur:
bu eksiksiz TestCase bakın. Bu formun sunucuya gönderilmesi, içeriğini düz metin yanıtında yansıtacaktır.Sorunum, özel çakılların ne konsolda ne de tarayıcıda düzgün görüntülenmemesidir. Bu benim FireFox ve IE ile gördükleri şeydir:
POST DATA:
test=Gr%C3%BC%C3%9Fe%21
---
UNESCAPED:
test=GrüÃe!
---
HARDCODED: Grüße!
Son satır (bir görüntüleme sorun olmadığını doğrulamak için gibi) giriş alanının değerini aynı olmalıdır kodlanmış dize Grüße!
olduğunu. Açıkçası, POST verileri UTF-8 olarak yorumlanmamıştır. Verileri alanlara ayırmak için require('querystring')
kullanırken aynı sorun oluşur.
Herhangi bir ipucu? Linux 4 Debian'daki node.js v0.4.11 kullanma
, kaynak kodu utf-8 charset kaydedilir UTF-8 karakter ASCII karakter setinde bulunmayan ve temsil ediliyor
Tamam, kısmen kendi soruya cevap verebilir: kullanarak 'decodeURIComponent()' yerine Unescape 'ait()' çekirdek sorunu çözer. Ancak, bu 'querytring' Node.JS modülü tamamen işe yaramaz ve ben kendimi ayrıştırma yapmak zorunda olduğu anlamına gelir. Yoksa ben bir şey mi içiyorum? –