簡體   English   中英

在二進制和base64之間轉換時Javascript緩沖區不一致

[英]Javascript buffer inconsistency when converting between binary and base64

由於與服務器之間的通信,我需要在二進制和base64之間轉換png。 但是,當我使用緩沖區時,直接讀取base64中的文件與讀取二進制文件然后轉換為base64之間存在不一致。

const fs = require('fs');
var data1 = Buffer.from(fs.readFileSync('test.png')).toString();
data1 = Buffer.from(data1).toString('base64');
var data2 = Buffer.from(fs.readFileSync('test.png')).toString('base64');
data1 == data2; //false

是什么導致差異?

我想我已經找到問題了。 如其他人所述,默認編碼為utf-8。 但是,utf-8似乎會導致某些信息丟失,因此無法將其轉換回base64。 因此,只需指定編碼即可使用。

const fs = require('fs');
var data1 = Buffer.from(fs.readFileSync('test.png')).toString('binary');
data1 = Buffer.from(data1,'binary').toString('base64');
var data2 = Buffer.from(fs.readFileSync('test.png')).toString('base64');
data1 == data2; //true

但是,我很好奇為什么utf-8會導致此問題,如果有人幫我忙,那會很棒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM