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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- URL編碼與解碼原理
- OpenLR 的編碼與解碼
- Go JSON編碼與解碼?GoJSON
- PHP 與 JS 的編碼問題PHPJS
- 請問有golang實現的acc編碼/解碼庫嗎?Golang
- Android 中的編碼與解碼Android
- PHP安全編碼PHP
- 指定PHP編碼PHP
- Base64編碼與解碼程式碼例項
- NSCoding協議的編碼與解碼協議
- URL與URL編碼詳解
- PHP編碼規範PHP
- php_字元編碼PHP字元
- php編碼問題PHP
- ptyon 特殊處理 url 編碼與解碼,字元編碼轉化 unicode字元Unicode
- PHP中文字元gbk編碼與UTF-8編碼的轉換PHP字元
- Web開發之編碼與解碼、簽名、加密與解密Web加密解密
- 開始起飛:Golang 編碼技巧分享Golang
- [轉]PHP編碼規範PHP
- php的編碼規則PHP
- Flutter Gzip 編碼與解碼 Dart Gzip 工具類操作FlutterDart
- Rust中字串的base64編碼與解碼Rust字串
- C#實現Base64編碼與解碼
- Javascript編碼解碼URLJavaScript
- Unicode編碼解碼Unicode
- RapidJSON 程式碼剖析(三):Unicode 的編碼與解碼APIJSONUnicode
- Netty常用招式——ChannelHandler與編解碼Netty
- JAVA與編碼Java
- 基於結構光投影三維重建:格雷碼編碼與解碼
- PHP編碼風格規範PHP
- iOS Emoji表情編碼/解碼iOS
- asp.net(C#) 編碼解碼(HtmlEncode與HtmlEncode)ASP.NETC#HTML
- PHP中urlencode()函式進行URL編碼詳解PHP函式
- python與編碼Python
- java Java與編碼Java
- 編碼與調製
- 3.3 編碼/解碼演算法演算法
- Base64 編碼解碼原理