vue3使用pako解压问题

 pako官网icon-default.png?t=M85Bhttp://nodeca.github.io/pako/

npm i pako

import pako from 'pako'; (vue3使用require会报错)

// 解压
function unzip(strData: AnyObject) {
	let charData = strData.split('').map(function (x: AnyObject) {
		return x.charCodeAt(0);
	});
	let binData = new Uint8Array(charData);
	let data = pako.inflate(binData);
	return Utf8ArrayToStr(data);
}
//解决数据过大和中文乱码
function Utf8ArrayToStr(array: any) {
	let out, i, len, c;
	let char2, char3;
	out = '';
	len = array.length;
	i = 0;
	while (i < len) {
		c = array[i++];
		switch (c >> 4) {
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
			case 7:
				// 0xxxxxxx
				out += String.fromCharCode(c);
				break;
			case 12:
			case 13:
				// 110x xxxx   10xx xxxx
				char2 = array[i++];
				out += String.fromCharCode(
					((c & 0x1f) << 6) | (char2 & 0x3f),
				);
				break;
			case 14:
				// 1110 xxxx  10xx xxxx  10xx xxxx
				char2 = array[i++];
				char3 = array[i++];
				out += String.fromCharCode(
					((c & 0x0f) << 12) |
						((char2 & 0x3f) << 6) |
						((char3 & 0x3f) << 0),
				);
				break;
		}
	}
	return out;
}

这样写会报错:

Uncaught (in promise) incorrect header check

 解压方法用下面这个,就不会报错;

function unzip(b64Data: any) {
    let strData = atob(b64Data);
    const charData = strData.split('').map(function (x) {
        return x.charCodeAt(0);
    });
    const binData = new Uint8Array(charData);
    const data = pako.inflate(binData);
    return Utf8ArrayToStr(data);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满blue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值