前端代码
decode(encodedData) {var strData = atob(encodedData)// Convert binary string to character-number arrayvar charData = strData.split('').map(function(x) {return x.charCodeAt(0)})// Turn number array into byte-arrayvar binData = new Uint8Array(charData)// unzipvar data = pako.inflate(binData)strData = this.Utf8ArrayToStr(data)return strData
},
Utf8ArrayToStr(array) {var out, i, len, cvar char2, char3out = ''len = array.lengthi = 0while (i < len) {c = array[i++]switch (c >> 4) {case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:// 0xxxxxxxout += String.fromCharCode(c)breakcase 12:case 13:// 110x xxxx 10xx xxxxchar2 = array[i++]out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))breakcase 14:// 1110 xxxx 10xx xxxx 10xx xxxxchar2 = array[i++]char3 = array[i++]out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))break}}return out
}
- Utf8ArrayToStr 这个方法和网上很多的 Utf8Array 不同在于,这里还解决了URL中文乱码的问题噢~
后端代码
byte[] gzipService = ZipUtil.gzip((JSON.toJSONString(service)), "UTF-8");
return ResultUtil.buildSuccByData(service);
- 后端这里使用了 Hutool 框架自带的方法。