<Buffer 72 65 74 72 69 65 76 65 72> 请解释一下js中的意思

<Buffer 72 65 74 72 69 65 76 65 72> Please explain what's It's mean in js

我正在练习javascript,想知道<Buffer 72 65 74 72 69 65 76 65 72>错误。

我正在从名为 dog.txt 的文件中读取数据。我发现当我将 "data" 放入 console.log 时,我看到了这个 <Buffer 72 65 74 72 69 65 76 65 72> 错误。我知道解决方案是将“${data}”放入 console.log 以获得预期结果。其实我想知道<Buffer 72 65 74 72 69 65 76 65 72>是什么意思。

这是代码

    return new Promise ((resolve,reject)=>{
        fs.readFile(file,(err,data)=>{
            if(err){reject("Data cannot be found")}else
            resolve(data);
        })
    })
}



const getdata=async()=>{
    try{
        const data=await ReadfilePro(`./dog.txt`);
    console.log(data);
    }catch(err){
        console.log(err);
    }
}

getdata();

这里 dog.txt 文件只包含这条狗的名字 "retriever",不带引号。

作为上述代码的结果,我在控制台中得到了这个 <Buffer 72 65 74 72 69 65 76 65 72>

我希望你能给出详细的答案,如果这是一个愚蠢的问题,我很抱歉。

我不想要解决方案我想要解释。谢谢

您正在读取的是一个字节缓冲区。 NodeJS 不能也不会做出您正在读取字符串的假设,因为这是一个比人们想象的更难证明其合理性的假设。

这背后的原因是 readFile 处于您可用的最低抽象级别之一。如果人们知道他们的数据格式,则希望人们在此基础上编写代码。

幸运的是,有转换方法。假设您知道您的缓冲区是有效的 utf8,调用 data.toString('utf8') 将尝试将您的缓冲区转换为 utf8。

正如@Sébastien 上面所说,您需要指定编码格式。下面是修复你的 readFile Promise

 return new Promise ((resolve,reject)=>{
    fs.readFile(file,'utf-8', (err,data)=>{
        if(err){reject("Data cannot be found")}else
        resolve(data);
    })
})

}

希望对你有帮助