后端写法:
/**
* 使用gzip进行压缩
*/
public static String compress(String primStr) {
if (primStr == null || primStr.length() == 0) {
return primStr;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = null;
try {
gzip = new GZIPOutputStream(out);
gzip.write(primStr.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (gzip != null) {
try {
gzip.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return new sun.misc.BASE64Encoder().encode(out.toByteArray());
}
前端接口接收:
unzip(b64Data) {
var strData = atob(b64Data);
console.log(strData);
var charData = strData.split("").map(function(x) {
return x.charCodeAt(0);
});
var binData = new Uint8Array(charData);
var data = pako.inflate(binData);
strData = String.fromCharCode.apply(null, new Uint16Array(data));
return JSON.parse(decodeURIComponent(strData));
},
如果数据中有乱码解决方法:
让后端同学在接口压缩之前加 encodeURIComponent转义一下,前端用decodeURIComponent解译。则不乱码。

本文详细介绍了如何使用GZIP进行数据压缩,并通过Base64编码进行传输的方法。后端通过GZIP压缩数据并编码为Base64字符串,前端接收后解码并解压缩,实现高效的数据传输。特别提及了在数据传输中可能出现的乱码问题及解决策略。
1400

被折叠的 条评论
为什么被折叠?



