【发布时间】:2020-06-17 20:30:52
【问题描述】:
我正在尝试将一些过去使用不安全的 Buffer 构造函数的 base64 转换代码转换为使用 Buffer.alloc 方法,但转换的行为很奇怪。这是我的代码:
let originalText = JSON.stringify({city: "New York", date: "2020/05/12"});
console.log("DATA: " + originalText)
let base64Text = Buffer.alloc(originalText.length, originalText, "binary").toString('base64');
console.log("Base64 version: " + base64Text);
let loadedBuffer = Buffer.alloc(base64Text.length, base64Text, 'base64');
const reconstitutedData = loadedBuffer.toString();
console.log("Result: " + reconstitutedData);
这是输出:
DATA: {"city":"New York","date":"2020/05/12"}
Base64 version: eyJjaXR5IjoiTmV3IFlvcmsiLCJkYXRlIjoiMjAyMC8wNS8xMiJ9
Result: {"city":"New York","date":"2020/05/12"}{"city":"New
转换是正确的,除了最后的重复位。显然,base64 字符串的长度不是在这里使用的正确长度,但这没有任何意义,因为似乎没有办法知道原始字符串的长度。也许我使用的 API 有误?
【问题讨论】:
标签: javascript node.js base64