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

时间:2018-03-23 05:26:08

标签: javascript node.js buffer

Nodejs输出显示一些缓冲区值,代码如下:

'use strict'

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

const output = fs.readFileSync('note.text');
console.log(output);

输出:

<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64 0d 0a 73 68 61 67 65 65 73 68 61 0d 0a 73 6c 6c 69 74 0d 0a>

3 个答案:

答案 0 :(得分:1)

'use strict'

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

output = fs.readFileSync('note.text');
output = output.toString('utf8');
console.log(output);

readFile函数读取为Buffer / Stream,您必须将其转换为可读形式。

答案 1 :(得分:0)

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

hello world
shageesha
sllit

答案 2 :(得分:0)

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

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

var fs = require('fs');
const output = fs.readFileSync('note.text', 'utf8');
console.log(output);

Node.js当前支持的字符编码包括:

&#39; ASCII&#39; - 仅适用于7位ASCII数据。此编码速度很快,如果设置则会剥离高位。

&#39; UTF8&#39; - 多字节编码的Unicode字符。许多网页和其他文档格式使用UTF-8。

&#39; utf16le应按&#39; - 2或4个字节,little-endian编码的Unicode字符。支持代理对(U + 10000到U + 10FFFF)。

&#39; UCS2&#39; - 别名&#39; utf16le&#39;。

&#39; BASE64&#39; - Base64编码。从字符串创建缓冲区时,此编码也将正确接受&#34; URL和文件名安全字母&#34;如RFC4648第5节中所述。

&#39; LATIN1&#39; - 将缓冲区编码为单字节编码字符串的方法(由RFC1345中的IANA定义,第63页,作为Latin-1补充块和C0 / C1控制代码)。

&#39;二进制&#39; - 别名为&#39; latin1&#39;。

&#39;十六进制&#39; - 将每个字节编码为两个十六进制字符。