Files
u-desk/internal/filesystem/encoding.go
T

25 lines
610 B
Go

package filesystem
import (
"bytes"
"io"
"unicode/utf8"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
)
// BytesToString 智能编码转换:UTF-8 直接返回,否则尝试 GBK → UTF-8
func BytesToString(data []byte) string {
if utf8.Valid(data) {
return string(data)
}
// 尝试 GBK 解码
reader := transform.NewReader(bytes.NewReader(data), simplifiedchinese.GBK.NewDecoder())
decoded, err := io.ReadAll(reader)
if err != nil || !utf8.Valid(decoded) {
return string(data) // 转换失败或结果无效,返回原始内容
}
return string(decoded)
}