前端 壓縮、解壓gzip字元
阿新 • • 發佈:2020-07-24
網路上有很多解析辦法,但是很多不能用,原因是壓縮 和 解壓 編譯方式沒有統一
壓縮字元 轉為 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) }