From a067a97e21f795bfeccb9250af42f88eef3b72cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com> Date: Tue, 8 Jul 2025 14:09:54 +0800 Subject: [PATCH] fix: Fix the issue of garbled characters when opening UTF-8 encoded files (#9454) refs: #9411 --- agent/app/service/file.go | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/agent/app/service/file.go b/agent/app/service/file.go index 321a6fbee..ef2f68824 100644 --- a/agent/app/service/file.go +++ b/agent/app/service/file.go @@ -18,6 +18,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" "github.com/1Panel-dev/1Panel/agent/app/repo" @@ -334,22 +335,24 @@ func (f *FileService) GetContent(op request.FileContentReq) (response.FileInfo, if len(content) > 1024 { content = content[:1024] } - _, decodeName, _ := charset.DetermineEncoding(content, "") - decoder := files.GetDecoderByName(decodeName) - if decoder != nil { - reader := strings.NewReader(info.Content) - var dec *encoding.Decoder - if decodeName == "windows-1252" { - dec = simplifiedchinese.GBK.NewDecoder() - } else { - dec = decoder.NewDecoder() + if !utf8.Valid(content) { + _, decodeName, _ := charset.DetermineEncoding(content, "") + decoder := files.GetDecoderByName(decodeName) + if decoder != nil { + reader := strings.NewReader(info.Content) + var dec *encoding.Decoder + if decodeName == "windows-1252" { + dec = simplifiedchinese.GBK.NewDecoder() + } else { + dec = decoder.NewDecoder() + } + decodedReader := transform.NewReader(reader, dec) + contents, err := io.ReadAll(decodedReader) + if err != nil { + return response.FileInfo{}, err + } + info.Content = string(contents) } - decodedReader := transform.NewReader(reader, dec) - contents, err := io.ReadAll(decodedReader) - if err != nil { - return response.FileInfo{}, err - } - info.Content = string(contents) } return response.FileInfo{FileInfo: *info}, nil }