Javascript 如何在node.js中将HTTP响应体编码为UTF-8
这是当前我的整个node.js服务器代码:Javascript 如何在node.js中将HTTP响应体编码为UTF-8,javascript,node.js,utf-8,Javascript,Node.js,Utf 8,这是当前我的整个node.js服务器代码: require('http').createServer(function (req, resp) { var html = [ '<!DOCTYPE html>', '<html>', '<head>', '<meta charset="utf-8" />', '<tit
require('http').createServer(function (req, resp) {
var html = [
'<!DOCTYPE html>',
'<html>',
'<head>',
'<meta charset="utf-8" />',
'<title>Sample Response</title>',
'</head>',
'<body>',
'<p>Hello world</p>',
'</body>',
'</html>'
].join('');
resp.writeHead(200, {
'Content-Length': Buffer.byteLength(html, 'utf8'),
'Content-Type': 'application/xhtml+xml;'
});
resp.write(html, 'utf8');
resp.end();
}).listen(80);
require('http').createServer(函数(req,resp){
变量html=[
'',
'',
'',
'',
“样本响应”,
'',
'',
“你好,世界”,
'',
''
].加入(“”);
负责人(200{
“内容长度”:Buffer.ByTeleLength(html,'utf8'),
“内容类型”:“应用程序/xhtml+xml;”
});
分别写入(html,'utf8');
分别结束();
}).听(80);
根据我对node.js文档的理解,resp.write()的第二个“utf8”参数应该使node将html字符串编码为UTF-8,而不是JavaScript字符串本机表示为的UTF-16。但是,当我将浏览器指向localhost:80,查看源代码并将其保存到本地html文件时,记事本++告诉我该文件是用UTF-16编码的。此外,当我通过W3CHTML验证工具运行它时,它还抱怨“内部编码声明utf-8与文档的实际编码(utf-16)不一致”
如何强制node.js将我的HTTP响应体编码为UTF 8?信不信由你,我在互联网上遇到的这个问题是由于。。。Internet Explorer。在这种情况下,Internet Explorer 11出于某种原因认为可以接受以UTF-16格式保存查看源代码窗口的结果,而不管原始页面编码是什么。所以,我的本地主机测试页面保存为utf16,google.com保存为utf16,等等。安装了Firefox及其utf8 当他们说IE是一个糟糕的浏览器时,我不相信他们。我想我们都需要学习一些时间:(也许你必须做:
'Content-Type': 'application/xhtml+xml; charset=utf-8'
根据:和
推荐HTTP头如下所示:
"Content-Type: text/html; charset=utf-8"
使用以下两个代码,可以使用IE8浏览器在utf-8中记录。
即使法语XP32不允许在记事本++中显示泰语字符
简表:
var http = require('http');
var server = http.createServer(function(req, res) {
var body = '<p>Hello Döm</p>\n \
<p>How are you ?</p>\n \
<p>ผมหมาป่า(I am The Wolf)</p>';
res.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
res.write(body, "utf-8");
res.end();
});
server.listen(8080);
var http=require('http');
var server=http.createServer(函数(req,res){
var body='你好,Döm\n\
你好吗?\n\
ผมหมาป่า(我是狼)';
res.writeHead(200,{“内容类型”:“text/html;charset=utf-8”});
res.write(正文,“utf-8”);
res.end();
});
监听服务器(8080);
长格式:
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
var title = 'Sample Response'
var body = '<p>Hello Döm</p>\n \
<p>How are you ?</p>\n \
<p>ผมหมาป่า(I am The Wolf)</p>';
var code = [
'<!DOCTYPE html>',
'<html>',
'<head>',
'<meta charset="utf-8" />',
'<title>' + title + '</title>',
'</head>',
'<body>',
body,
'</body>',
'</html>'
].join('\n');
res.write(code, "utf8");
res.end();
});
server.listen(8080);
var http=require('http');
var server=http.createServer(函数(req,res){
res.writeHead(200,{“内容类型”:“text/html;charset=utf-8”});
变量标题='样本响应'
var body='你好,Döm\n\
你好吗?\n\
ผมหมาป่า(我是狼)';
变量代码=[
'',
'',
'',
'',
''+标题+'',
'',
'',
身体,
'',
''
].join('\n');
res.write(代码“utf8”);
res.end();
});
监听服务器(8080);
如果我将IE8中的泰语字符记录在HTML页面中,泰语字符会得到很好的保护。你能启动一个数据包嗅探器(Wireshark等)并发布你看到的内容的样本吗?我不明白这种行为。你是通过上传文件或直接指向网站来验证的吗?我已经在Linux和Windows下用WebStorm和Sublime文本测试过这一点(这是4个测试),所有测试都显示UTF-8。也许这是一个记事本++的东西?应该也发送UTF-9头的图像吗?使用字符集发送图像还是只发送文本是一个好主意?