मुझे नोड.जेएस वेब सर्वर का उपयोग करते समय POST डेटा में यूटीएफ -8 तारों को डीकोड करने में समस्याएं आ रही हैं।node.js और 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);
यह एक स्वसंपूर्ण वेब सर्वर है कि बंदरगाह 11,180 पर सुनता है और एक सरल रूप है कि विशेष वर्ण के साथ एक इनपुट फ़ील्ड के साथ एक HTML पृष्ठ भेजता है:
यह पूरा testcase देखें। सर्वर पर उस फॉर्म को पोस्ट करना एक सादे पाठ प्रतिक्रिया में इसकी सामग्री को गूंज देगा।
मेरी समस्या यह है कि विशेष गुणों को कंसोल पर और न ही ब्राउज़र में ठीक से प्रदर्शित नहीं किया जा रहा है। यह वही है मैं दोनों Firefox और IE के साथ देख रहा है:
POST DATA:
test=Gr%C3%BC%C3%9Fe%21
---
UNESCAPED:
test=GrüÃe!
---
HARDCODED: Grüße!
अंतिम पंक्ति हार्डकोडेड स्ट्रिंग Grüße!
कि इनपुट फ़ील्ड का मान से मेल खाना चाहिए (के रूप में सत्यापित करने के लिए कि यह एक प्रदर्शित समस्या नहीं है) है। जाहिर है POST डेटा को यूटीएफ -8 के रूप में नहीं समझा जाता है। फ़ील्ड में डेटा तोड़ने के लिए require('querystring')
का उपयोग करते समय भी वही समस्या होती है।
कोई सुराग?
डेबियन पर Node.js v0.4.11 का उपयोग लिनक्स 4, स्रोत कोड utf-8 चारसेट में सहेजा गया है
ठीक है, मैं आंशिक रूप से अपने ही सवाल का जवाब कर सकते हैं: का उपयोग कर 'decodeURIComponent()' 'बजाय unescape की()' कोर समस्या का हल। हालांकि, इसका मतलब है कि 'querytring' नोड.जेएस मॉड्यूल पूरी तरह से बेकार है और मुझे खुद को पार्सिंग करना है। या मैं कुछ mussing हूँ? –