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 转换,并在膨胀之前将其转换回来。
我正在使用 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 转换,并在膨胀之前将其转换回来。