前端 压缩、解压gzip字符

网络上有很多解析办法,但是很多不能用,原因是压缩 和 解压 编译方式没有统一

本文用到的插件 : pako.jsjs-base64

压缩字符 转为 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)
    }

猜你喜欢

转载自www.cnblogs.com/zzzzzwt/p/13373815.html