PHP编码gzdeflate与Golang解码缩小

  

8月7日@黄同学找我问:“数据存到复述是gzdeflate压缩过的数据,golang从复述,取出来,解压缩失败”。很多从PHP转golang的业务经常会遇到,所以写下这篇博文,希望可以帮助更多的人。
想要使用golang解码PHP的编码,那么就应该需要知道gzdeflate函数的算法是什么,先到gzdeflate文档,查看了一下发现:
<代码> gzdeflate使用的是纯粹的缩小格式> 压缩/扁> package 主要      import  (   “弦”   “fmt”   “压缩/扁”   “字节”   “io/ioutil”   )      func  main (), {   str:=" huangyupeng123 "   b:=Gzdeflate (str, 1)   ss:=Gzencode(字符串(b))   fmt.Println (ss)/* str:=" huangyupeng123 "   ss:=Gzdeflate (str, 0)   fmt.Println (ss)   s=Gzencode (ss)   fmt.Println */}//,解码   func  Gzencode (data 字符串),string , {   r :=flate.NewReader (strings.NewReader(数据)   defer  r.Close ()   ,,err :=, ioutil.ReadAll(右)   if  err  !=nil  {   fmt.Errorf (“% s \ n”,犯错)   }   return 字符串(出)   }//,编码   func  Gzdeflate (data 字符串,level  int), [] byte , {   var  bufs  bytes.Buffer   w, _ :=flate.NewWriter(和缓冲区,级别)   w.Write([]字节(数据))   w.Flush ()   w.Close ()   return  bufs.Bytes ()   }//,编码   func  GzdeflateForString (data 字符串,level  int), string , {   var  bufs  bytes.Buffer   w, _ :=flate.NewWriter(和缓冲区,级别)   w.Write([]字节(数据))   w.Flush ()   defer  w.Close ()   return  bufs.String ()   }

经过@黄同学同学测试可以正确使用。留下维基供后续遇到的同学查看。


PHP编码gzdeflate与Golang解码缩小