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中文乱码怎么解决的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

go基础及语法(二)

16 golang结构体详解(二)

golang的hashmap怎么扩容

golang 限流器,控制并发,线程池

go 将数组按指定大小分隔

golang 优秀框架有哪些

[译]golang 1.8工具链改进

golang context 详解

手撸golang 结构型设计模式 适配器模式

手撸golang etcd raft协议之5

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




打赏

取消

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

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

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

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

评论

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