基于node搭建服务学习过程中遇到的问题。
有一下三种情况:
通过node的http模块,我们创建一个服务器端口提供网页访问功能:
const server = http.createServer((req, res) => {
console.log("接受到请求。。。");
res.setHeader("Content-Type", "text/html;charset=UTF-8");
url(res, req.url)//自定函数实现的简单路由,内部依靠fs模块实现
})
server.listen(4000)
通过fs,我们将文件(html、css、js等)资源自动转换为字节码
<Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0d 0a 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 3e 0d 0a 0d 0a 3c 68 65 61 64 3e 0d
0a 20 20 20 20 3c ... 407 more bytes>
然后res.end发送回浏览器,因为http请求头中有编码规范utf8,所以浏览器能处理中文。
但是第二种情况我们发现,不设置http请求头中的utf8编码规范时,html仍然能够编译中文内容,具体原因是因为head标签中的: <meta charset="UTF-8">
所以提问:
1.html中meta设置charset和node给http请求设置charset区别是啥?
2.浏览器对于这两种编码设置是怎么处理?(我个人猜想:html还是字节码的时候只能识别到http的请求头,但是html编译后执行时又能识别到meta)
3.res.end传参的直接是汉字时会自动转换为字节码吗(因为此时不设置编码浏览器拿到的内容会乱码)?
ps:笔者小白,虽菜勿喷,上述问题皆是实验加思考后总结的问题。
即使你不在header中设置charset
浏览器也会进行 charset detection
chrome的:
https://github.com/google/com...
其次 名词乱用脑壳有点疼
html它就是一段文本,不管它存在内存中,硬盘上,还是正在传输的数据报文中
一般我们所说的字节码指的是 bytecode