From 69d7b71995fe8a39684a6b241f62ac047ae4dec3 Mon Sep 17 00:00:00 2001 From: Trae AI Date: Sun, 21 Jun 2026 14:39:56 +0800 Subject: [PATCH] fix: fix Chinese filename garbled in zip file list (GBK to UTF-8) --- backend/internal/router/admin/versions.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/internal/router/admin/versions.go b/backend/internal/router/admin/versions.go index a04c018..eee3cfd 100644 --- a/backend/internal/router/admin/versions.go +++ b/backend/internal/router/admin/versions.go @@ -12,6 +12,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" "verification-platform-backend/internal/database" "verification-platform-backend/internal/middleware" @@ -20,6 +21,7 @@ import ( "verification-platform-backend/pkg/response" "github.com/gin-gonic/gin" + "golang.org/x/text/encoding/simplifiedchinese" ) func SetupVersionRoutes(r *gin.RouterGroup) { @@ -952,11 +954,20 @@ func parseZipFile(zipPath string) ([]VersionFileInfo, error) { rc.Close() fileHash := hex.EncodeToString(hash.Sum(nil)) - fileType := getFileType(f.Name) + + // 修复中文文件名乱码:如果文件名不是有效 UTF-8,尝试 GBK 解码 + fileName := f.Name + if !utf8.ValidString(fileName) { + if decoded, err := simplifiedchinese.GBK.NewDecoder().String(fileName); err == nil { + fileName = decoded + } + } + + fileType := getFileType(fileName) files = append(files, VersionFileInfo{ - FilePath: f.Name, - FileName: filepath.Base(f.Name), + FilePath: fileName, + FileName: filepath.Base(fileName), FileSize: int64(f.UncompressedSize64), FileHash: fileHash, FileType: fileType,