Node.js 服务器编码问题

在上一篇推文中,我们用 node 实现了一个简单的 web 服务器,并成功在页面上显示出了我们要输出的内容。

上篇文章:

当时的代码如下:

// 创建一个简单的的 http 服务器程序

// 加载 http 模块
var http = require('http');

// 创建 http 服务对象
var server = http.createServer();

// 监听用户请求事件( request 事件)
// request 对象包含了用户请求报文中的所有内容 ,通过 request 对象可以获取所有用户提交过来后的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
server.on('request', function (request, response) {

  // 向客户端(浏览器)返回数据
  response.write('Hello Word');
  // 返回数据的时候要结束,不然就会一直请求
  response.end();
})

// 启动服务,设置启动时的端口号
server.listen(8080, function () {
  console.log('OK,访问:localhost:8080');
})

当我们启动这个服务器之后,访问设置好的端口:localhost:8080 就可以看到我们要显示的 Hello word 。

Node.js 服务器编码问题_第1张图片

我们试着把返回客户端的数据中加入中文,会出现什么效果。

// 向客户端(浏览器)返回数据
response.write('Hello Word,你好!');

重新启动我们的服务器。会发现,有一串非人类的东西显示在页面上。

Node.js 服务器编码问题_第2张图片

没错,这段非人类的东西就是我们刚刚的 你好 ,为什么就变成了这个样子,狗子你变了。

其实狗子没变,只是浏览器不知道要用什么样的格式来显示,我们只要告诉浏览器我们需要使用什么格式来显示就好。

使用 response.setHeader() 方法来设置。

// 设置 response 返回数据类型与编码格式,否则浏览器会乱码
// Content-Type 设置数据类型
response.setHeader('Content-Type', 'text/plain; charset=utf-8');

通过分号来隔开多个变量,第一个 Content-Type 是返回的内容是什么格式的,text/plain 表示的是纯文本。第二个 charset=utf-8 就是我们要告诉浏览器以什么格式来显示我们的文本。

我们再次重启服务器,就会发现,我们的 你好 就正常的显示出来了,狗子还是原来的狗子。

Node.js 服务器编码问题_第3张图片

疯狂暗示什么!!! ∨∨∨∨

你可能感兴趣的:(Node.js 服务器编码问题)