浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压

最近在页面上有个显示数据表格的功能,数据由后台传给前台JS表格插件。数据格式为JSON

由于数据量很大,就想到用GZIP压缩以后传给前台。压缩前,某个表格的数据量达到3M多,用GZIP压缩后就200K左右。

业务流程是:先检查缓存中是否有静态文件,如果没有就从数据库中读出来然后保存成文件。这个过程中,我用GZIP先进行了压缩,然后保存。然后再下次读的时候直接读取这个文件。

问题是,读取静态文件之后浏览器却无法正确解码,报ERR_CONTEN_DECODING_FAILED。我在网上搜索了一下原因,有说是文件中存在BOM头,会导致解码失败,经检查生成文件的PHP没有BOM头。期间,怀疑是文件编码的问题,于是用Editplus尝试打开,刚打开提示要选择编码方式,于是选择了UTF8,结果还是不行。

当我将gzencode位置放在缓存文件读取时再做压缩,发现浏览器能正常解码。推断,问题可能是处在数据保存为文件时做gzencode压缩而产生的。

用Sublime打开静态文件,发现其中的编码位置显示的是“hexadecimal”(16进制),然后尝试用UTF8编码后再打开页面,报解码错误。

而现在的数据是需求更改后的数据,体积很小,本身未压缩的情况下就只有100K左右。会不会跟数据长度也有关系。于是回到早期未改需求时的分支进行测试。测试后发现,只要不更改静态文件的编码,就可以正常显示。

开始时之所以会报解码错误,是因为我几次都是还没在浏览器上输出之前就打开过静态文件看,并把编码方式修改了。

所以用GZIP生成的文件,务必编码为16进制(hexadecimal),不要修改成其他的编码格式。

时间: 2024-10-28 21:11:32

浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压的相关文章

2017年05月10日记一次微项目投产 | 安卓版微信内置浏览器不能解析gzip压缩过的mp4视频的问题

前言 今天投产了一个小项目,一个很简单的H5,有播放视频功能,使用了videojs插件. 之前也做过数个视频播放,视频的转压都按照既定流程进行,文件放到FTP后,iphone和安卓机测试下来都没有问题. 于是给链接,业务组直接在微信公众号里投放了.那个企业号有不少关注的人,推送发出去1分钟就有近千阅读量. 但是我在点击链接后,发现项目打不开了,而且该企业官网的主站也挂了,在经过pc端和手机4G下测试发现问题依然存在后,赶紧报bug给其他同事. 通过询问FTP管理员得知,那个"大"企业的

linux下分卷压缩,合并解压的3种方法

我们上传东西的时候,由于文件过大而不能上传,或者不给上传,最明显的就是发邮件了,附件最大5M,有的10M.如果超过了就郁闷了.这个时候,如果能把压缩的东西,分割开来就比较爽了,windows下面我想大家知道怎么分割,利用winrar,winzip图型化设置压缩出来的块的大小.但是在linux下面有没有这样的方法了,linux下面有rar命令,有zip命令,windows下面这二种方式可以分割压缩,我想linux下面绝对也是可以的.下面是我尝试过程的记录: 一,rar分卷压缩和合并解压 rar -

【Linux探索之旅】第四部分第一课:压缩文件,解压无压力

内容简介 1.第四部分第一课:压缩文件,解压无压力 2.第四部分第二课:SSH连接,安全快捷 压缩文件,解压无压力 最近小编因为换工作,从南法搬到巴黎.折腾了很久. 网络一直用的是公共的无线网,信号不行.无线上网的box盒子已经说通网了,但我觉得墙上的线有问题.反正就是用不了自己的告诉WiFI盒子. 而且还要继续找房子,刚上班第一周,诸多事情,所以最近停更了很久.不好意思. 不过,现在又重新开始啦.木啊哈哈哈~ 百足之虫,死而不僵... 第四部分我们会讲Linux网络方面的一些知识点.既然讲到网

文件压缩、文件解压、文件传输

常用的压缩格式targzipbzip2zip.tz-->tar.gz 文件传输 window传输到linux 1.安装lrzsz(必须要使用支持这个功能的客户端xshell,secureCRT,putty不支持,适合传输小文件)sz.rz2.xftp(传输大文件,xshell自带xftp) linux传输到linuxscp -->基于sshscp 选项 /path1/file remoteIP:/path2scp 选项 remoteIP:/path2/file1 /path1/ rsync -

linux 中压缩记得压缩用c,解压用x

tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是根据需要在压缩或解压档案时可选的. -z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名. # tar -cf all.tar *.jp

*.tar 用 tar –xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *.tar.gz和*.tgz 用 tar –xzf 解压 *.bz2 用 bzip2 -d或者用bunzip2 解压 、*.tar.bz2用tar –xjf 解压

1.*.tar 用 tar –xvf 解压 2.*.gz 用 gzip -d或者gunzip 解压 3.*.tar.gz和*.tgz 用 tar –xzf 解压 4.*.bz2 用 bzip2 -d或者用bunzip2 解压 5.*.tar.bz2用tar –xjf 解压 6.*.Z 用 uncompress 解压 7.*.tar.Z 用tar –xZf 解压 8.*.rar 用 unrar e解压 9.*.zip 用 unzip 解压

使用Gzip压缩数据,加快页面访问速度

在返回的json数据量大时,启用Gzip压缩,可以提高传输效率.下面为Gzip压缩对json字符串压缩并输出到页面的代码. 一.代码 /** 向浏览器输出字符串响应数据,启用gzip压缩 */ protected void writeResponseDataStr(String data){ /** 获取响应对象 */ HttpServletResponse response = ServletActionContext.getResponse(); /** 设置响应内容类型 */ respon

开启Nginx的gzip压缩功能详解

默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行压缩传输,我们需要手动来调. 开启gzip的指令如下:  代码如下 复制代码 gzip on;gzip_http_version 1.0;gzip_disable "MSIE [1-6].";gzip_types text/plain application/x-javascript te

php对gzip文件或者字符串解压实例参考

要采集一个网站,目标站采用了gzip压缩传输网页,本来应该只要发送一个http头 Accept-Encoding: identity或者干脆不发送这个头等,就可以使目标站返回没有经过gzip压缩的页面了,不过很不幸,目标站无视客户端的请求,仍然返回gzip数据,造成乱码. 其实php对gzip解压很简单,用内置的gzdecode函数就可以了,不过很可惜我配置了半天也无法支持gzdecode函数,所以只好变通一下: 复制代码 代码如下: if (!function_exists('gzdecode