javascript - Javascript fs.readFileSync 返回什么编码?

标签 javascript node.js encoding buffer readfile

考虑以下 Node.js Javascript 程序:

var fs = require('fs');
var encoding1='?';
var encoding2='?';
var a = fs.readFileSync('./testdoc.pdf');
var b = new Buffer(fs.readFileSync('./testdoc.pdf',encoding1),encoding2);
console.log(a===b);

必须将 encoding1encoding2 变量设置为什么值才能在控制台上打印 true

最佳答案

您需要a.equals(b)

对于像 PDF 这样的二进制数据,您应该使用 "binary" 编码,但任何编码都不会使任何两个缓冲区与 === 运算符相等,因此 a === b 总是会给你 false。您需要使用 a.equals(b) 来测试两个缓冲区是否具有相同的内容。

请参阅文档中的 buf.equals(otherBuffer):

示例

查看这段代码:

var fs = require('fs');
var encoding1 = 'binary';
var encoding2 = 'binary';
var a = fs.readFileSync('./testdoc.pdf');
var b = new Buffer(fs.readFileSync('./testdoc.pdf', encoding1), encoding2);
console.log('Object equality:', a === b);
console.log('Buffer equality:', a.equals(b));

它将打印:

Object equality: false
Buffer equality: true

关于javascript - Javascript fs.readFileSync 返回什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855288/

相关文章:

php - 设置用户上传的标准背景图片分辨率

javascript - "Error: <path> attribute d: Expected number"

javascript - 如何从 View 列中获取分类列总计到 XPageTotal 值

使用 socket.io 的 Javascript 游戏。服务器滞后

javascript - 在 go 中编码可执行文件并在 javascript 中解码不起作用

C#:用于解码 Quoted-Printable 编码的类?

javascript - D3js v3 到 v5 升级 : unable to convert strings to integers

javascript - 如何正确地在node.js中使数据库流动

node.js - 如何使用nginx作为s3 aws的代理?

c# - 将英镑符号从 Delphi 发送到 C# Web 服务