这是目前我的整个 node.js 服务器代码:
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);
根据我对 node.js 文档的理解, resp.write() 的第二个 'utf8' 参数应该导致 node 将 html 字符串编码为 UTF-8,而不是 JavaScript 字符串本机表示的 UTF-16。但是,当我将浏览器指向 localhost:80,查看源代码并将其保存到本地 html 文件时,Notepad++ 告诉我该文件以 UTF-16 编码。此外,当我通过 W3C html 验证器工具运行它时,它还抱怨“内部编码声明 utf-8 与文档的实际编码 (utf-16) 不一致”。
如何强制 node.js 将我的 HTTP 响应正文编码为 UTF 8?