Nodejs zlib 不会膨胀它刚刚缩小的文本

Nodejs zlib does not inflate the text it just deflated

我正在使用 zlib.deflateRaw 和 zlib.inflateRaw 来尝试对字符串放气并再次将其充气。然而,下面的过程是抛出错误。

const zlib = require('zlib');
const fs = require('fs');
let normal = `<?xml version="1.0" encoding="UTF-8"?>`;

zlib.deflateRaw(normal, function(err, deflated){
  console.log(deflated.toString('utf-8'));
});

let deflated = `�����Q(K-*��ϳU2�3PRH�K�O��K�U
qӵP��`;

zlib.inflateRaw(Buffer.from(deflated, 'utf-8'), function(err, inflated){
  console.log(err, inflated);
});

defalted 正是我从第一个 console.log 输出中 copy/paste 得到的。我收到 Error: invalid block type 错误

复制粘贴?!为什么您期望打印、复制和粘贴二进制数据会或可能会保留实际的字节值?那些黑底白字的问号是二进制数据被破坏的地方。

为了能够复制和粘贴,您需要将二进制 deflate 输出转换为可打印的内容,例如使用 base64 转换,并在膨胀之前将其转换回来。