1.本人有一些纯纯的SB行为
2,先看情况
在我使用https.request后,监听data事件,process.stdout.write(d)直接将数据写入,然后end结束返回。
我想要我的返回不是utf8的形式,我需要gbk的形式
3.这个时候,我想到一些办法
A.setHeader
- ①设置res的Content-type加上gbk,但是,我通过res.constructor得到的返回类型是IncomingMessage,所以无法setHeader;
- ②于是我阅读官方文档,觉得应该在req的end前,加上,setHeader
B.npm
③setHeader走不通,我就想使用一些npm官方的库的使用,来解决这个问题,于是,我看了很多,也安装了,但是我发现,最后输出的结果是通过end后展示的,难道我要得到end后的值吗?于是我console.log(req.end(),'fuck')发现,我不能这样得到返回的结果
C.JSON
最后发现,process.stdout.write(d)做的事,难道我不能自己去写入数据,然后做处理吗?比起去解析这个过程,然后改写这个内容,我自己去写入数据难道来的不是更快更方便吗?
D.终于完成编码格式转换
const arr = []
res.on('data',(chunk)=>{
arr.push()
//push进去的是chunk的一个个分散的字符
})
//接下来需要拼接
res.on('end',()=>{
//进行拼接
const result = Buffer.concat(arr).toString()
//完成字符转换
JSON.parser(result)
})
小结
自己还是对response的事件不熟悉,导致,无法反应过来process.stdout.write(d)是在做什么。这个过程在写node.js静态服务器的时候,自己也手写过这个过程,但是因为不够熟悉,导致,浪费了很多时间找错误的方法。