对于文本类型的数据,最好加上编码,目的是为了防止中文解析乱码问题
解决字符串乱码
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
setHeader:响应数据头
Content-Type:内容类型
text/plain:普通文本类型
text/html:解析html格式类型
application/x-jpg:下载图片的
image/jpeg:直接显示图片
charset=utf-8:编码是utf-8
HTTP Content-Type对照表网址
https://tool.oschina.net/commons/
写 'text/plain'
的话就是普通的文本并且不会解析HTML标签
写'text/'html
的话就会解析HTML语句
不同资源(url)对应的Content-Type都是不一样的,图片就不需要指定的编码
一般情况下只有字符数据才需要指定的编码
let http = require('http')
let server = http.createServer()
server.on('request', (req, res) => {
// setHeader:响应数据头
// Content-Type:内容类型
// text/plain:普通文本类型
// charset=utf-8:编码是utf-8
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
res.end('响应成功')
})
server.listen(3000, () => {
console.log('运行成功')
})
小测试,结合fs使用
let http = require('http')
let fs = require('fs')
let server = http.createServer()
server.on('request', (req, res) => {
var url = req.url
if (url === '/') {
fs.readFile('../aaa/index.html', (err, data) => {
if (err) {
res.setHeader('Content-type', 'text/plain; charset=utf-8')
res.end('文件读取失败')
} else {
res.setHeader('Content-Type', 'text/html; charset=utf-8')
// data默认是二进制数据,可以通过toString转为可以识别的字符串
// res.end() 支持两种数据类型,一种是二进制,一种是字符串
// 在这里可以直接res.end(data)
res.end(data)
}
})
} else if (url === '/jpg') {
fs.readFile('../aaa/ceshi/a.jpg', (err, data) => {
if (err) {
res.setHeader('Content-Type', 'text/plain')
res.end('图片读取失败')
} else {
// 图片不需要指定的编码,我们常说的编码指的是字符编码,这里去掉charset=utf-8就行了
res.setHeader('Content-Type', 'image/jpeg')
res.end(data)
}
})
} else {
res.end('啥也不是')
}
})