PHP編碼gzdeflate與Golang解碼DEFLATE
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("%sn",err) } return string(out)}// 編碼func Gzdeflate(data string,level int) []byte { var bufs bytes.Buffer w,_ :=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.Buffer w,_ :=flate.NewWriter(&bufs,level) w.Write([]byte(data)) w.Flush() defer w.Close() return bufs.String()}
經過@黃同學同學測試可以正確使用。留下wiki供後續遇到的同學檢視。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2817161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go JSON編碼與解碼?GoJSON
- URL編碼與解碼原理
- OpenLR 的編碼與解碼
- PHP 與 JS 的編碼問題PHPJS
- PHP安全編碼PHP
- 指定PHP編碼PHP
- ptyon 特殊處理 url 編碼與解碼,字元編碼轉化 unicode字元Unicode
- Unicode編碼解碼Unicode
- Netty常用招式——ChannelHandler與編解碼Netty
- Flutter Gzip 編碼與解碼 Dart Gzip 工具類操作FlutterDart
- Rust中字串的base64編碼與解碼Rust字串
- 開始起飛:Golang 編碼技巧分享Golang
- Javascript編碼解碼URLJavaScript
- PHP編碼風格規範PHP
- 編碼與幽默
- python中的編碼&解碼Python
- 基於結構光投影三維重建:格雷碼編碼與解碼
- PHP – 編碼規範 v1.0PHP
- 音視訊編解碼 -- 編碼引數 CRFCRF
- 編碼與調製
- 3.3 編碼/解碼演算法演算法
- 解碼返回Unicode編碼的文字Unicode
- 【Netty】編解碼器Netty
- PHP中文GBK編碼轉UTF-8PHP
- Spring MVC 中文編碼亂碼解決SpringMVC
- Unicode編碼解碼的全面介紹Unicode
- 網頁地址編碼解碼(網頁地址明文密文轉換)url編碼解碼 Python3網頁Python
- golang如何優雅的編寫事務程式碼Golang
- 編碼的道與禪
- 字符集與編碼
- PHP程式碼的優與劣PHP
- Python編解碼問題與文字檔案處理Python
- Python程式設計:URL網址連結中的中文編碼與解碼Python程式設計
- netty系列之:自定義編碼解碼器Netty
- 編解碼器軟體支援 WMP,因為它使用 Directshow 編解碼器
- php匯入時設定不同的編碼PHP
- 新媒體編碼時代的技術:編碼與傳輸
- python程式碼混淆與編譯Python編譯