nodejs 中 stream.pipe()直接将文件输出到页面乱码
最近仿照anywhere写个anyentry目录读取器,发现使用stream.pipe()将文件输入到页面时,出现中文乱码
看哇
看到着实不爽,不解决咋能算
于是开始寻找问题根源
一、配置encoding
一开始就想到了是stream.pipe()
文件读取的时候没有设置编码
看官网的介绍是这样的
于是果断加上
然鹅 测试然并卵
二、配置html的charset
再一细想应该是html没有设置 charset 的原因
跑去一看html
有配置呀! ???那奇了怪了
静下心来在想想,再次运行发现
这个为什么没有乱码?!
于是比对页面
这个是目录页面
这个是文件页面
发现head中根本就没有东西
再看一次代码,总算是明白了
这个是直接将其文件流返回给response的
而目录是使用了html模板进行渲染的,就是是一个乱码一个没乱的原因了
三、setHeader 增加charset
最后res.setHeader('Content-Type', contentType['text']+"; charset=utf-8");
增加一个charset=utf-8
解决问题
好了问题解决,告一段落,其他废话不多说
效果测试可以 本地安装 npm i -g anyentry
, anyentry -p 9999
源码地址可以访问 https://github.com/dengxiaoning/anyentry