目录

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
}