8月7日@黄同学找我问:“数据存到redis是gzdeflate压缩过的数据,golang从redis取出来,解压缩失败”。很多从PHP转Golang的业务经常会遇到,所以写下这篇博文,希望可以帮助更多人。

想要使用golang解码php的编码,那么就应该需要知道gzdeflate函数的算法是什么,先到gzdeflate文档,查看了一下发现:

gzdeflate使用的是纯粹的DEFLATE格式。这就与golang的compress/flate包一致了。有了了解就可以看着golang文档实现代码了。遂与@黄同学同学写了几个函数进行验证,最后定稿如下:package mainimport ("strings""fmt""compress/flate""bytes""io/ioutil")func main() {str:="huangyupeng123"b:=Gzdeflate(str,-1)ss:=Gzencode(string(b))fmt.Println(ss)/*str:="huangyupeng123"ss:=Gzdeflate(str,0)fmt.Println(ss)s=Gzencode(ss)fmt.Println(s)*/}// 解码func Gzencode(data string) string  {r :=flate.NewReader(strings.NewReader(data))defer r.Close()out, err := ioutil.ReadAll(r)if err !=nil {fmt.Errorf("%s\n",err)}return string(out)}// 编码func Gzdeflate(data string,level int) []byte  {var bufs bytes.Bufferw,_ :=flate.NewWriter(&bufs,level)w.Write([]byte(data))w.Flush()w.Close()return bufs.Bytes()}// 编码func GzdeflateForString(data string,level int) string  {var bufs bytes.Bufferw,_ :=flate.NewWriter(&bufs,level)w.Write([]byte(data))w.Flush()defer w.Close()return bufs.String()}

php deflate 解压,PHP编码gzdeflate与Golang解码DEFLATE相关推荐

  1. 爬取B站弹幕(Java版本,附带deflate解压)

    前几天突发奇想要爬取B站的弹幕,于是简单在网上找到了B站的弹幕API,关于如何获取B站的接口这里不再赘述,本文主要集中解决我在此开发过程中所遇到的难题.(采用okhttp) 开始的时候,我是想直接爬取 ...

  2. php解压base64编码,PHP函数分享之解压缩base64压缩文件

    解压缩base64 压缩文件,稍微解释一下,比如你有一个pdf文件,使用软件压缩成了.gz格式的文件,然后再把这个文件做成了basa64 String 传输给某个人,比如这个人就是我,好吧,问题来了, ...

  3. php解压base64编码,php base64编码和urlencode

    Revit如何模型导入到InfraWorks中 Infraworks也就是以前的Autodesk Infrastructure Modeler(AIM)作为一款优秀的概念设计软件,能接收来自各种来源的 ...

  4. GZip、Deflate压缩算法对应的C#压缩解压函数

    GZip解压函数 View Code GZip压缩函数 View Code 1 /// <summary> 2 /// GZip压缩函数 3 /// </summary> 4 ...

  5. Linux(程序设计):29---Zlib库(数据压缩与解压)

    一.Zlib库概述 zlib压缩算法页是对deflate进行的封装,在另一篇文章中我们介绍过了Deflate压缩算法算法,文章最后也提到了zlib压缩算法.具体可以参阅:https://blog.cs ...

  6. C# .NET 使用DotNetZip开源类库 处理 压缩/解压 Zip 处理乱码情况

    dotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 压缩/解压/重命名: //1.压缩//指定编码,防止中文乱码情况using (ZipFile ...

  7. web上传zip大文件,java服务接收并解压ZIP文件

    目录 一.背景 二.知识点 三.代码实现 1.依赖 2.web 代码 3. java服务端 一.背景 公司产品小伙伴画了原型后,需要上传到服务器上供开发查看:由于文件数量很多,100M左右差不多要传3 ...

  8. c#中使用Zlib压缩与解压的方法

    目录 介绍 System.IO.Compression zlib.net SharpZipLib 速度对比 总结 参考与延申 关于Zlib 关于 Deflate 和 Raw Deflate 关于CSh ...

  9. [manjaro] unzip-icon解决解压zip文件乱码

    简述: 网上说解压zip文件用unzip命令.然后我的没有unzip.就安装了一个.开始解压.解压成功.但是乱码...恶心.开始查资料. 说解压的时候用-O指定解压的编码即可..好.开始动工.但是un ...

  10. 深度解读基于commons-compress解压文件——7z与常规解压

    简介 java解压文件的方式有很多种,Apache官方提供了一个工具,可以用来解压很多类型的文件.该工具可以解压和压缩带密码的7z文件,并支持ar, arj, cpio, dump, tar, zip ...

最新文章

  1. centos5.6 (64bit)编译安装vsftpd-2.3.4的配置(两种用户登录)[连载之电子商务系统架构]...
  2. python封装方法有几种_python之--------封装
  3. poj1426(dfs)
  4. Android从url不产生cookie,如何从android.webkit.CookieManager获取所有cookie或cookie的URL
  5. 详细地图_一目了然:蒙城学区划分详细地图
  6. 企业发卡修复版源码(短链二维码)
  7. 负载均衡获取客户端IP
  8. 获得1.5亿区块链投资后,矩阵元怎么做区块链?
  9. 关于JavaScript中return的使用情况
  10. 什么是 Elasticsearch?一篇搞懂
  11. excel查找空值快捷键_有了这7个Excel中常用的小技巧,再也不用担心自己要加班了!...
  12. 国产企业级服务器操作系统排名,国产操作系统那个最好排名
  13. c语言实现按键的抖动与消除,7.3 按键消抖
  14. vue后台管理做适配的最佳方案,你知道吗
  15. 无法识别 移动固态硬盘_固态硬盘不识别怎么办 固态硬盘不认盘解决方法介绍...
  16. 在LR字符串中交换相邻字符
  17. mysql redo查看_mysql redo
  18. Thinkphp5.1整合支付宝APP支付
  19. 流形上的预积分(下)
  20. Istio 101:Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理

热门文章

  1. java 内存中创建文件_java - 如何在Java中创建一个zip文件 - 堆栈内存溢出
  2. bi数据分析工具有哪些?
  3. STM32名字含义以及其与ARM公司的关系
  4. Elasticsearch基于DSL搜索语法进行复杂查询
  5. LINUX下浮点运算
  6. 宝洁通过新的创意合作伙伴关系重新想象创意并重塑广告
  7. Android小钢琴
  8. linux tar.7z如何解压,(转)Linux下解压:tar、rar、7z命令
  9. 蓝桥杯--第七届决赛:圆圈舞
  10. 密码疑云 (3)——详解RSA的加密与解密