Dra*_*ake 7 javascript utf-8 node.js
这是我目前的整个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);
Run Code Online (Sandbox Code Playgroud)
根据我对node.js文档的理解,resp.write()的第二个'utf8'参数应该使节点将html字符串编码为UTF-8,而不是JavaScript字符串本身表示为的UTF-16.但是,当我将浏览器指向localhost:80时,查看源代码并将其保存到本地html文件,Notepad ++告诉我该文件是以UTF-16编码的.此外,当我通过W3C html验证器工具运行时,它还抱怨"内部编码声明utf-8不同意文档的实际编码(utf-16)".
如何强制node.js将我的HTTP响应体编码为UTF 8?
Jon*_*Ong 16
也许你必须这样做:
'Content-Type': 'application/xhtml+xml; charset=utf-8'
Run Code Online (Sandbox Code Playgroud)
根据:https://www.w3.org/International/articles/http-charset/index和https://en.wikipedia.org/wiki/List_of_HTTP_header_fields.
推荐HTTP标头如下所示:
"Content-Type: text/html; charset=utf-8"
Run Code Online (Sandbox Code Playgroud)
使用下面的两个代码,可以使用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);
Run Code Online (Sandbox Code Playgroud)
长表:
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);
Run Code Online (Sandbox Code Playgroud)
如果我从IE8在HTML页面中录制,泰语字符保存得很好.
不管你相信与否,我在互联网上遇到的这个问题是由于...... Internet Explorer。在这种情况下,Internet Explorer 11 认为以 UTF-16 保存“查看源”窗口的结果是可以接受的,无论原始页面编码是什么。因此,我的 localhost 测试页面保存为 utf16,google.com 保存为 utf16,等等。安装了 Firefox 及其 utf8 就眼睛所见。
当他们说 IE 是一个糟糕的浏览器时我不相信他们。我想有时我们都必须学习。
:(
| 归档时间: |
|
| 查看次数: |
23326 次 |
| 最近记录: |