相关代码
//pako.js 解压代码
function unzip(b64Data){
var strData = atob(b64Data);
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 strData;
}
// java服务器端使用gzip进行压缩
public static String gzip(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());
}
你期待的结果是什么?实际看到的错误信息又是什么?
问题描述
解析成json串后 中文发生乱码
问题出现的环境背景及自己尝试过哪些方法
使用gzip主要是为了加快页面请求json数据速度,在服务器端对中文进行编码后,js再解码也不行,求大神指点!
getBytes()
用的是系统默认字符集,可能和前端的字符集不一样同理js中解码的时候也应该制定字符集
最后这种场景直接开servlet容器/nginx的压缩就行了,自己写压缩太麻烦而且效率不见得有这两个做得好