最近仿照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()直接将文件输出到页面乱码的更多相关文章

  1. nodejs中Stream的理解

    在nodejs中可以通过fs模块读写文件,我们来看下fs模块提供的接口: fs.readFile(filename, callback) 异步读取文件. filename是读取文件的文件名,如果是相对 ...

  2. nodejs中stream相关资料

    nodejs中流(stream)的理解 nodejs stream 手册完整中文版本 nodejs stream详细使用介绍

  3. Node.js中使用pipe拷贝大文件不能完全拷贝的解决办法

    原来的代码如下: var readable = fs.createReadStream( filepath ); var writable = fs.createWriteStream( outFil ...

  4. learning nodejs 1 - stream.pipe

    a simple http server using inner http module. var http = require('http'); var fs = require('fs'); // ...

  5. nodejs中使用http请求返回值为html时乱码问题

    今天用nodejs进行http请求时返回的数据是一个html文件,然后我还是按照以前解析json数据的方法.果不其然报错了:SyntaxError: Unexpected token  in JSON ...

  6. Html表单提交到Servlet输出到页面乱码

    Html使用的编码是UTF-8编码显示页面,之后使用form表单提交字段到Servlet中,Servlet将利用getParamer方法获得form提交的字段,之后通过Respone中的writer将 ...

  7. nodejs基础 -- Stream流

    nodejs 的 Stream 是一个抽象接口,node中有很多对象实现了这个接口.例如,对http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)也是一个Stre ...

  8. 理解nodejs中的stream(流)

    阅读目录 一:nodeJS中的stream(流)的概念及作用? 二:fs.createReadStream() 可读流 三:fs.createWriteStream() 可写流 回到顶部 一:node ...

  9. nodeJS中读写文件方法的区别

    导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三 ...

  10. nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容

    1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...

随机推荐

  1. Java笔记第十一弹

    TCP通信程序 TCP发送数据 //需要进行三次握手 import java.io.*; public class Main{ public static void main(String[] arg ...

  2. python创建线程传参误区记录

    创建线程可以使用threading模块中的Thread子类: 其中Thread子类允许的参数如下: (self, group=None, target=None, name=None, args=() ...

  3. KCP协议浅析

    概述 KCP协议结合了TCP和UDP协议的特点,是一个快速可靠的协议. 引述官方介绍: KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大 ...

  4. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(12)-Charles如何使用Repeat功能进行简单压力测试

    1.前言 李四:"今天好累啊,点的我手指都疼了.我一直被要求给后端接口的同事重复发送请求来调试接口." Charles:"哎呀,李四同学,你怎么能一条一条的手动发送呢 我 ...

  5. GOROOT、GOPATH、Go Modules 三者的关系介绍

    GOROOT GOROOT路径即为存放Golang语言内建的程序库的所在位置,简单地说就是Golang的安装路径 若按照Folang-Download and install流程,则由go env命令 ...

  6. 微信小程序登录页左上角的home图标如何隐藏?wx.hideHomeButton()不生效?

    在做微信小程序时,我们一般都会在app.js中去判断当前用户是否已经登录,如果已经登录,会直接跳转到小程序的首页.如果未登录那么直接跳转登录页. 此时我们需要把首页首页作为微信小程序的pages列表中 ...

  7. Windows的压缩文件夹(zip/cab)

    https://weibo.com/1114096665/DtHXgvnva #windows10# 硬要把zip.cab文件当文件夹,不爽怎么解决? 删除注册表 "HKEY_CLASSES ...

  8. 【转载】使用IntelliJ IDEA 14和Maven创建java web项目

    安装Maven 下载安装 去maven官网下载最新版(传送门  密码: gfi1) 解压到安装目录. 配置 右键桌面的计算机图标,属性–>高级系统设置–>环境变量,添加M2_HOME的环境 ...

  9. 多态 polymorphic

    多态是同一个行为具有多个不同表现形式,多态实现需要以下条件 继承父类并重写方法 父类引用指向子类对象:Animal a = new Cat(); 多态实例: //测试类 public class Te ...

  10. 重新理解RocketMQ Commit Log存储协议

    本文作者:李伟,社区里大家叫小伟,Apache RocketMQ Committer,RocketMQ Python客户端项目Owner ,Apache Doris Contributor,腾讯云Ro ...