1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-04 12:52:28 +08:00

fix(fileutil): unzip Chinese garbled code during decompression (#279)

解压时出现中文乱码
This commit is contained in:
tangke
2024-12-19 19:06:27 +08:00
committed by GitHub
parent d4b425e39c
commit 1f64e02df4

View File

@@ -25,6 +25,8 @@ import (
"sync" "sync"
"github.com/duke-git/lancet/v2/validator" "github.com/duke-git/lancet/v2/validator"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
) )
// FileReader is a reader supporting offset seeking and reading one // FileReader is a reader supporting offset seeking and reading one
@@ -422,8 +424,15 @@ func UnZip(zipFile string, destPath string) error {
defer zipReader.Close() defer zipReader.Close()
for _, f := range zipReader.File { for _, f := range zipReader.File {
decodeName := f.Name
if f.Flags == 0 {
i := bytes.NewReader([]byte(f.Name))
decoder := transform.NewReader(i, simplifiedchinese.GB18030.NewDecoder())
content, _ := io.ReadAll(decoder)
decodeName = string(content)
}
// issue#62: fix ZipSlip bug // issue#62: fix ZipSlip bug
path, err := safeFilepathJoin(destPath, f.Name) path, err := safeFilepathJoin(destPath, decodeName)
if err != nil { if err != nil {
return err return err
} }