【问题标题】:Why does console.log of fs.readFile data not log a string?为什么 fs.readFile 数据的 console.log 不记录字符串?
【发布时间】:2019-07-25 21:26:57
【问题描述】:

我有以下代码:

http = require("http");
fs = require("fs");

fs.readFile("file.txt", function(err, data) {
  console.log(data);
});

file.txt 的内容是“Hello world”,所以我希望将“Hello world”记录到控制台。相反,我得到了“缓冲区”,然后是一些十六进制数字。这是为什么呢?

【问题讨论】:

标签: node.js


【解决方案1】:

如果您没有将编码类型作为fs.readFile() 选项的一部分传递,那么它会为您提供一个 Buffer 对象,而不是作为数据的字符串。如果您指定适用于 'utf8', 之类的字符串的编码,那么它会为您提供一个字符串。

const fs = require("fs");

fs.readFile("file.txt", 'utf8', function(err, data) {
  if (err) {
      console.log(err);
  } else {
      console.log(typeof data);    // "string"
      console.log(data);
  }
});

所以,基本上编码是一个可选参数,如果没有传递,那么你会得到一个 Buffer 对象作为你可以从中提取字符串的数据,但最好传递你期望从文件中的数据中获得的任何编码.

注意:这在the doc for fs.readFile() 中有非常清楚的解释。

附:请正确声明变量fshttp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2019-05-10
    • 2011-09-21
    • 2022-11-28
    • 1970-01-01
    • 2012-05-18
    • 2018-03-06
    相关资源
    最近更新 更多