这"H4sIAAAAAAAA//NIzcnJVyguSUzOzi9LLUrLyS/XUSjJSMzLLlZIyy9SSMwpT6wsVshIzSnIzEtXBACs78K6LwAAAA=="
是一个 base64 编码的字符串,您首先需要将其解码到缓冲区中。
textEncoder.encode
只需将该 base64 编码字符串编码为字节流。
如何做到这一点取决于您是在浏览器中还是在 nodejs 上。
node.js 版本
要将解压缩的数据转换为您进一步使用的字符串new TextDecoder().decode()
对于节点,您将使用它Buffer.from(string, 'base64')
来解码 base64 编码的字符串:
import { ungzip } from 'pako';
// decode the base64 encoded data
const gzipedData = Buffer.from("H4sIAAAAAAAA//NIzcnJVyguSUzOzi9LLUrLyS/XUSjJSMzLLlZIyy9SSMwpT6wsVshIzSnIzEtXBACs78K6LwAAAA==", "base64");
console.log('gzipeddata', gzipedData);
const ungzipedData = ungzip(gzipedData);
console.log('ungziped data', new TextDecoder().decode(ungzipedData));
浏览器版本
在浏览器中,您必须使用atob
,并且您需要将解码后的数据转换为Uint8Array
使用 例如 Uint8Array.from
。
我使用的转换取自Convert base64 string to ArrayBuffer,您可能需要验证它是否真的适用于所有情况。
// decode the base64 encoded data
const gezipedData = atob("H4sIAAAAAAAA//NIzcnJVyguSUzOzi9LLUrLyS/XUSjJSMzLLlZIyy9SSMwpT6wsVshIzSnIzEtXBACs78K6LwAAAA==")
const gzipedDataArray = Uint8Array.from(gezipedData, c => c.charCodeAt(0))
console.log('gzipeddata', gzipedDataArray);
const ungzipedData = pako.ungzip(gzipedDataArray);
console.log('ungziped data', new TextDecoder().decode(ungzipedData));
<script src="https://cdnjs.cloudflare.com/ajax/libs/pako/2.0.4/pako.min.js"></script>