![d1eefd6018387fa8eaa761ae86fbc008.png](https://i-blog.csdnimg.cn/blog_migrate/6f392fb56a6065cd8eeab07e31211a68.jpeg)
场景
winrar压缩的zip包解压后乱码
分析
编码不一致,winrar默认采用本地编码 (国内一般都是gbk)进行压缩 ,而golang字符串编码是utf-8
解决
//zip文件解压
func Unzip(zipFile string, destDir string) error {
zipReader, err := zip.OpenReader(zipFile)
if err != nil {
return err
}
defer zipReader.Close()
var decodeName string
for _, f := range zipReader.File {
if f.Flags == 0 {
//如果标致位是0 则是默认的本地编码 默认为gbk
i := bytes.NewReader([]byte(f.Name))
decoder := transform.NewReader(i, simplifiedchinese.GB18030.NewDecoder())
content, _ := ioutil.ReadAll(decoder)
decodeName = string(content)
} else {
//如果标志为是 1 << 11也就是 2048 则是utf-8编码
d