前端 压缩、解压gzip字符
网络上有很多解析办法,但是很多不能用,原因是压缩 和 解压 编译方式没有统一
压缩字符 转为 gzip:
zip (str) { // Base64.encode 使用Base64压缩字符,防止中文乱码(不推荐encodeURI、encodeURIComponent,编译后更大) let binaryString = pako.gzip(encode(str), { to: 'string' }); return binaryString },
解压gzip:
unzip (key) { let charData = key.split('').map(item => item.charCodeAt(0)) let array = pako.inflate(charData) // 如果字符太大,会导致内存溢出报错,这里使用分片处理 var str = ''; var chunk = 8 * 1024 var i; for (i = 0; i < array.length / chunk; i++) { str += String.fromCharCode.apply(null, array.slice(i * chunk, (i + 1) * chunk)); } str += String.fromCharCode.apply(null, array.slice(i * chunk)); // Base64.decode 解压必须也要使用相同的编译方式 return Base64.decode(str) }