• 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


  • 相关阅读:
    ubuntu配置服务器环境
    discuz安装与学习资料
    前端面试题总结(一)
    css公共样式,初始化
    js的解析--预处理(三)
    sass的安装与基础
    移动开发学习笔记(一) 移动开发的注意事项
    移动前端一些常用的框架
    JavaScript的构造器与对象(二)
    JavaScript 中的Object的使用详解笔记(一)
  • 原文地址:https://www.cnblogs.com/dengxiaoning/p/12871798.html
Copyright © 2020-2023  润新知