Golang字符串编码转换
目录
在实际开发中,我们常遇到需要处理不同编码的字符串数据——无论是处理遗留系统的GBK数据,还是对接第三方服务的特殊编码需求。Go语言中的字符串编码转换,完整通用代码如下,
package main
import (
"bytes"
"io"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
)
// StrDecoder 对字符串进行重新编码
func StrDecoder(text string, encode string) (string, error) {
var reader io.Reader
switch strings.ToLower(encode) {
case "gb18030":
reader = transform.NewReader(bytes.NewReader([]byte(text)), simplifiedchinese.GB18030.NewDecoder())
case "gbk":
reader = transform.NewReader(bytes.NewReader([]byte(text)), simplifiedchinese.GBK.NewDecoder())
case "hzgb2312":
reader = transform.NewReader(bytes.NewReader([]byte(text)), simplifiedchinese.HZGB2312.NewDecoder())
default:
reader = bytes.NewReader([]byte(text))
}
d, err := io.ReadAll(reader)
if err != nil {
return "", err
}
return string(d), nil
}