猿问

为什么在 golang、linux 中使用存档/zip 文件名会变得混乱?

我正在使用 golang 的标准包存档/zip 将多个文件打包成一个 zipfile。

这是我的测试代码:


package main


import (    

    "archive/zip"

    "log"

    "os"

)


func main() {

    archive, _ := os.Create("/tmp/测试file.zip")

    w := zip.NewWriter(archive)


    // Add some files to the archive.

    var files = []struct {

        Name, Body string

    }{

        {"测试.txt", "test content: 测试"},

        {"test.txt", "test content: test"},

    }


    for _, file := range files {

        f, err := w.Create(file.Name)

        if err != nil {

            log.Fatal(err)

        }


        _, err = f.Write([]byte(file.Body))

        if err != nil {

            log.Fatal(err)

        }

    }


    err := w.Close()

    if err != nil {

        log.Fatal(err)

    }

}

结果:

我得到了一个名为测试file.zipunder的 zip 文件/tmp。

之后unzip,我得到两个文件:test.txt, ц╡ЛшпХ.txt,这是一团糟。

两个文件中的内容都符合预期。


为什么会发生这种情况以及如何解决这个问题?


慕侠2389804
浏览 222回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答