Skip to content

Commit 31e25d2

Browse files
committed
Feat: support GBK code
1 parent ad5921e commit 31e25d2

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ go.work
2222
*.zip
2323
file-zip
2424

25-
.vscode
25+
.vscode
26+
main_linux
27+
main

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
module file-zip
22

33
go 1.19
4+
5+
require golang.org/x/text v0.14.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
2+
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=

main.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@ package main
22

33
import (
44
"archive/zip"
5+
"bytes"
56
"flag"
67
"fmt"
78
"io"
9+
"io/ioutil"
810
"log"
911
"os"
1012
"path/filepath"
13+
14+
"golang.org/x/text/encoding/simplifiedchinese"
15+
"golang.org/x/text/transform"
1116
)
1217

1318
var zipPath string
1419
var distDirPath string
1520
var mode int
21+
var encode string
1622

1723
const (
1824
ZIP_MODE int = 1
@@ -33,6 +39,7 @@ func (i *SrcFiles) Set(value string) error {
3339
var srcFiles SrcFiles
3440

3541
func init() {
42+
flag.StringVar(&encode, "code", "", "support GBK,UTF-8")
3643
flag.StringVar(&zipPath, "zipPath", "", "zip file path")
3744
flag.StringVar(&distDirPath, "DistDirPath", "", "dir path")
3845
flag.Var(&srcFiles, "file", "--file 1.txt --file 2.txt --file 3.txt")
@@ -147,6 +154,12 @@ func UnZip(distDirPath, zipPath string) {
147154
// 第二步,遍历 zip 中的文件
148155
for _, f := range zipFile.File {
149156
filePath := f.Name
157+
if encode == "GBK" {
158+
i := bytes.NewReader([]byte(f.Name))
159+
decoder := transform.NewReader(i, simplifiedchinese.GB18030.NewDecoder())
160+
content, _ := ioutil.ReadAll(decoder)
161+
filePath = string(content)
162+
}
150163
if f.FileInfo().IsDir() {
151164
_ = os.MkdirAll(prefix+filePath, os.ModePerm)
152165
continue

0 commit comments

Comments
 (0)