golang zip中文乱码怎么解决


当前第2页 返回上一页

"golang.org/x/text/transform"

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

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编码

            decodeName = f.Name

        }

        fpath := filepath.Join(destDir, decodeName)

        if f.FileInfo().IsDir() {

            os.MkdirAll(fpath, os.ModePerm)

        } else {

            if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {

                return err

            }

            inFile, err := f.Open()

            if err != nil {

                return err

            }

            defer inFile.Close()

            outFile, err := os.OpenFile(fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())

            if err != nil {

                return err

            }

            defer outFile.Close()

            _, err = io.Copy(outFile, inFile)

            if err != nil {

                return err

            }

        }

    }

    return nil

}

PHP中文网,有大量免费的Golang入门教程,欢迎大家学习!

以上就是golang zip中文乱码怎么解决的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

golang 为什么没有枚举

聊聊gost的objectpool

归并排序

go设计模式之状态模式浅谈

golang组件化网络服务器框架halia指南

zookeeper 的 golang 客户端

golang slice如何拷贝

聊聊tempo的exclusivequeues

leetcode go

go语言的依赖管理

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...