当使用 WebStorm 运行 NodeJS 代码时, 使用 response.write 有中文的时候,会显示乱码,如下图:
server.on('request',function (request, response) {console.log('收到客户端的请求了,请求路径是:' + request.uri)response.write('06-http-res - 周四 - 22:00');// 告诉客户端,我的话说完了, 你可以呈递给用户了response.end()
});
输出结果:
这个时候,可以添加一句话,这句话就可以解决中文乱码问题:
response.setHeader('content-type', 'text/plain; charset=utf-8');
完整代码:
server.on('request',function (request, response) {console.log('收到客户端的请求了,请求路径是:' + request.uri)// 解决中文乱码问题response.setHeader('content-type', 'text/plain; charset=utf-8');response.write('06-http-res - 周四 - 22:00');// 告诉客户端,我的话说完了, 你可以呈递给用户了response.end()
});
原因是:
- 在服务器默认发送的数据,其实是 utf8 编码的内容。但是浏览器不知道你是 utf8 编码的内容,浏览器在不知道服务器响应内容的编码的情况下会按照当前操作系统的默认编码去解析。中文操作系统默认是 gbk。
- 解决方法就是正确的告诉浏览器我给你发送的内容是什么编码的;
- 在 http 协议中, content-type 用来告知对方我给你发送的数据内容是什么类型。