Javascript 节点js中这种输出背后的原因是什么?

Javascript 节点js中这种输出背后的原因是什么?,javascript,node.js,buffer,Javascript,Node.js,Buffer,对于以下代码,Nodejs输出在某种程度上显示了一个缓冲区值: 输出: 您正在读取文件流并打印流,而不是文本表示。您所看到的以十六进制表示的流中的数据 hello world shageesha sllit readFile函数读取为缓冲区/流,您必须将其转换为可读形式。如果指定了编码选项,则此函数返回字符串。否则它将返回一个缓冲区 fs.readFileSync(path[, options]) 像这样: var fs = require('fs'); const output = fs.

对于以下代码,Nodejs输出在某种程度上显示了一个缓冲区值:

输出:


您正在读取文件流并打印流,而不是文本表示。您所看到的以十六进制表示的流中的数据

hello world
shageesha
sllit

readFile函数读取为缓冲区/流,您必须将其转换为可读形式。

如果指定了编码选项,则此函数返回字符串。否则它将返回一个缓冲区

fs.readFileSync(path[, options])
像这样:

var fs = require('fs');
const output = fs.readFileSync('note.text', 'utf8');
console.log(output);
Node.js当前支持的字符编码包括:

“ascii”-仅适用于7位ascii数据。此编码速度快,如果设置,将去除高位

“utf8”-多字节编码的Unicode字符。许多网页和其他文档格式使用UTF-8

“utf16le”-2或4个字节,小尾端编码的Unicode字符。支持U+10000到U+10FFFF的代理项对

“ucs2”-“utf16le”的别名

“base64”-base64编码。从字符串创建缓冲区时,此编码还将正确接受RFC4648第5节中指定的URL和文件名安全字母表

“latin1”-一种将缓冲区编码为单字节编码字符串的方法,如RFC1345第63页IANA中所定义,为拉丁-1补充块和C0/C1控制代码

“binary”-“latin1”的别名


“hex”-将每个字节编码为两个十六进制字符。

readFileSync方法返回缓冲区,这是此类输出的唯一原因。注意:如果指定了编码选项,则此函数返回字符串。否则它将返回一个缓冲区没有指定文件的名称,节点只提供文件的字节,存储在缓冲区中。是的,现在我明白了。!怎么了。。console.logoutput.tostirn;应添加到结尾处。。要解决此缓冲区输出问题。!在readFileSync中使用“utf8”的原因是什么?
'use strict'

var fs;
fs = require("fs");

output = fs.readFileSync('note.text');
output = output.toString('utf8');
console.log(output);
fs.readFileSync(path[, options])
var fs = require('fs');
const output = fs.readFileSync('note.text', 'utf8');
console.log(output);