繁体   English   中英

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

[英]What is the reason behind this kind of output in node js?

对于以下代码,Nodejs输出会显示一些Buffer值:

'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>
'use strict'

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

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

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

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

hello world
shageesha
sllit

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

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定义,将其作为Latin-1补充块和C0 / C1控制代码)。

'binary'-'latin1'的别名。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM