nodejs 中 stream.pipe()直接将文件输出到页面乱码

2023-07-29,,

最近仿照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


nodejs 中 stream.pipe()直接将文件输出到页面乱码的相关教程结束。

《nodejs 中 stream.pipe()直接将文件输出到页面乱码.doc》

下载本文的Word格式文档,以方便收藏与打印。