これは現在、私の 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() の 2 番目の 'utf8' 引数により、node は JavaScript 文字列がネイティブに表現される UTF-16 ではなく、html 文字列を UTF-8 としてエンコードする必要があります。しかし、ブラウザーで localhost:80 を指定してソースを表示し、それをローカルの html ファイルに保存すると、Notepad++ はファイルが UTF-16 でエンコードされていることを通知します。さらに、W3C html バリデータ ツールを実行すると、「内部エンコーディング宣言 utf-8 がドキュメントの実際のエンコーディング (utf-16) と一致しません」というメッセージも表示されます。
node.js に HTTP 応答本文を UTF 8 としてエンコードさせるにはどうすればよいですか?