You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用fs.readFileSync为何输出Buffer值?

为什么Node.js中fs.readFileSync会输出Buffer?

嘿,这个问题太常见了!你看到的<Buffer ...>其实是Node.js默认返回的二进制数据容器——Buffer对象。

原因很简单:当你调用fs.readFileSync('note.text')时,没有指定文件的编码格式,Node.js没法判断这个文本文件用的是utf8、gbk还是其他编码,所以它会直接以原始二进制字节的形式读取文件内容,并用Buffer对象来存储这些字节。你看到的那些十六进制数字(比如68、65),就是文件里每个字符对应的ASCII或UTF-8字节值——比如68对应字母h,65对应e,拼起来正好是你文件里的hello world这类内容。

怎么拿到正常的文本输出?

有两种简单的解决办法:

  • 读取时直接指定编码
    在readFileSync的第二个参数里加上编码格式(比如最常用的utf8),Node.js会自动把Buffer转换成对应编码的字符串:

    'use strict'
    var fs;
    fs = require("fs");
    const output = fs.readFileSync('note.text', 'utf8');
    console.log(output);
    
  • 手动把Buffer转换成字符串
    如果已经拿到了Buffer对象,也可以调用它的toString()方法,传入编码格式来转换:

    'use strict'
    var fs;
    fs = require("fs");
    const output = fs.readFileSync('note.text');
    console.log(output.toString('utf8')); // 这里指定utf8编码
    

这样就能输出你预期的文本内容啦!

内容的提问来源于stack exchange,提问作者BatmanForLife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:42:04