go语言实现UTF8与GB2312内码转换
使用Go语言做个UTF-8转GB2312的代码,输入utf-8编码的文本,输出转换后的国标编码的hex内码
package main
import (
"fmt"
"os"
"strings"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
)
// convertEncoding 将指定编码的文本转换为目标编码的文本
func convertEncoding(text, from, to string) (string, error) {
var encoder transform.Transformer
switch to {
case "GB2312":
encoder = simplifiedchinese.GB18030.NewEncoder() // 使用 GB18030 转换器
default:
return "", fmt.Errorf("不支持的目标编码:%s", to)
}
// 读取原始编码的文本内容
originalBytes := []byte(text)
// 使用转换器对原始编码的文本进行编码转换
convertedBytes, _, err := transform.Bytes(encoder, originalBytes)
if err != nil {
return "", fmt.Errorf("编码转换失败:%w", err)
}
// 将转换后的字节切片转换为十六进制字符串
var hexString strings.Builder
for _, b := range convertedBytes {
hexString.WriteString(fmt.Sprintf("%02X ", b))
}
return hexString.String(), nil
}
func main() {
// 从命令行参数获取UTF-8编码的文本
if len(os.Args) < 2 {
fmt.Println("请提供UTF-8编码的文本作为参数")
return
}
utf8Text := strings.Join(os.Args[1:], " ")
// 将UTF-8编码的文本转换为GB2312编码
gb2312Hex, err := convertEncoding(utf8Text, "UTF-8", "GB2312")
if err != nil {
fmt.Println("编码转换失败:", err)
return
}
// 输出转换后的GB2312编码文本的十六进制形式
fmt.Println("转换后的GB2312编码文本的十六进制形式:")
fmt.Println(gb2312Hex)
}
编译运行
go mod init
go mod tidy
go build
./iconv 测试
转换后的GB2312编码文本的十六进制形式:
B2 E2 CA D4
原文地址:https://blog.csdn.net/wuquan_1230/article/details/145165678
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!