• 正文
  • 相關推薦
申請入駐 產業(yè)圖譜

go語言實現UTF8與GB2312內碼轉換

01/25 09:55
945
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

使用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)
? ? }

? ??// 將轉換后的字節(jié)切片轉換為十六進制字符串
? ??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("請?zhí)峁︰TF-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

 

 

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄