扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

go语言实现UTF8与GB2312内码转换

2025/01/25
1205
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

使用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

 

 

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录