http和html都有多处地方可以指定字符集,本文探究各个配置的优先级
HTML 字符集的指定有三个地方:
http 头部
如:Content-Type: text/html; charset=utf8
html 头部 meta charset
如:
html 头部 meta http-equiv=”Content-Type”
如:
优先级的探究
- NodeJS 服务器代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| const net = require('net');
const server = net.createServer((socket) => { socket.on('data', (data) => { const request = data.toString(); console.log('Received request:'); console.log(request);
const responseBody = '<html><head><meta charset="UTF-8"/><meta http-equiv="Content-Type" content="text/html; charset=gbk"/></head><body><h1>Hello, World! 你好世界!</h1></body></html>'; const responseHeaders = 'HTTP/1.1 200 OK\r\nContent-Type: text/html;\r\n\r\n'; const responseBuffer = Buffer.from(responseHeaders + responseBody, 'utf8');
socket.write(responseBuffer, () => { socket.end(); }); }); });
const PORT = 3000; server.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
|
优先级结论
优先级从高到低排列
http 头部 -> html 头部 meta charset -> html 头部 meta http-equiv=”Content-Type”