網絡上有很多解析辦法,但是很多不能用,原因是壓縮 和 解壓 編譯方式沒有統一
壓縮字符 轉為 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) }