node——6-响应数据类型 Content-Type(解决中文乱码)

版权声明:未经同意,不得随意转载转载 https://blog.csdn.net/lucky541788/article/details/83868879
  • 在服务端默认发送的数据,其实是 utf-8 编码的内容,但是浏览器不知道你是 utf-8 编码的内容
  • 浏览器在不知道服务器响应内容的编码的情况下会按照当前操作系统的默认编码去解析
  • 中文操作系统默认解析是 gbk
  • 解决方法就是正确的告诉浏览器发送的编码格式,在 http 协议中,Content-Type 就是用来告诉对方发送数据内容的类型
let http = require('http');

var server = http.createServer();

server.on('request', function (req, res) {
    // 在服务端默认发送的数据,其实是 utf-8 编码的内容
    // 但是浏览器不知道你是 utf-8 编码的内容
    // 浏览器在不知道服务器响应内容的编码的情况下会按照当前操作系统的默认编码去解析
    // 中文操作系统默认解析是 gbk
    // 解决方法就是正确的告诉浏览器发送的编码格式
    // 在 http 协议中,Content-Type 就是用来告诉对方发送数据内容的类型
    // res.setHeader('Content-Type', 'text/plain; charset=utf-8');
    // res.end('你好,世界!');
    let url = req.url;

    if (url === '/plain') {
        // text/plain 就是普通文本

        res.setHeader('Content-Type', 'text/plain; charset=utf-8');
        res.end('hello 世界  <p>hello 世界</p>');
    } else if (url === '/html') {
        // 如果你发送的是 html 格式的字符串,请用 text/html
        
        res.setHeader('Content-Type', 'text/html; charset=utf-8');
        res.end('hello 世界  <p>hello 世界</p>');
    }
});

server.listen(3000, function () {
    console.log('Server is running...');
});

在这里插入图片描述

Content-Type 协议类型查询

  1. 结合 fs 发送文件中的数据
  2. Content-Type
    不同的资源对应的 Content-Type 是不一样的
    图片不需要指定编码,一般只为字符数据指定编码
let http = require('http');
let fs = require('fs');

let server = http.createServer();

server.on('request', function (req, res) {
    let url = req.url;

    if (url === '/') {
        // 要发送的是在文件中的内容
        fs.readFile('./test-resource/index.html', function (err, data) {
            if (err) {
                res.setHeader('Content-Type', 'text/plain; charset=utf-8');
                res.end('文件读取失败');
            } else {
                // data 默认是二进制数据,可以通过 .toString 转为咱们能识别的字符串
                // res.end() 支持两种数据类型,一种是二进制,一种是字符串
                res.setHeader('Content-Type', 'text/html; charset=utf-8');
                res.end(data);
            }
        })
    }else if(url==='/pic.jpg'){
        // url:统一资源定位符
        // 一个 url 最终其实是要对应到一个资源的
        fs.readFile('./test-resource/pic.jpg', function (err, data) {
            if (err) {
                res.setHeader('Content-Type', 'text/plain; charset=utf-8');
                res.end('文件读取失败');
            } else {
                // data 默认是二进制数据,可以通过 .toString 转为咱们能识别的字符串
                // res.end() 支持两种数据类型,一种是二进制,一种是字符串
                // 图片就不需要编码了,常说的编码一般指的是:字符编码
                res.setHeader('Content-Type', 'image/jpeg');
                res.end(data);
            }
        })
    }
});

server.listen(3000, function () {
    console.log('Server is running...');
});

在这里插入图片描述

补充

  1. 除了 Content-Type 可以用来指定编码,也可以在 HTML 页面中通过 meta 元数据来声明当前文本的编码格式,浏览器也会识别它。
    例如:<meta charset="UTF-8">

猜你喜欢

转载自blog.csdn.net/lucky541788/article/details/83868879