gpt4 book ai didi

go - 通过 TCP 读取字节并在 Go 中编码为 ISO-8859-9

转载 作者:行者123 更新时间:2023-12-02 18:30:17 25 4
gpt4 key购买 nike

我是 Golang 新手。我正在开发一项通过 TCP 从远程地址读取字节的服务。问题是我无法更改我读取的字节编码。我想将读取的字节转换为 ISO-8859-9 字符串。这是阅读代码的一部分。

 conn, err := net.Dial("tcp", constant.ConnectHost+":"+constant.ConnectPort)
checkError(err)
defer conn.Close()

reader := bufio.NewReader(conn)
textproc := textproto.NewReader(reader)

bytes, err := textproc.R.ReadBytes(constant.EndTextDelimiter)
checkError(err)
msg := string(bytes[:])

代码运行良好。但编码与我想要的不同。这是接收服务的问题。有什么建议吗?

最佳答案

charmap.ISO8859_9.NewEncoder().Bytes()函数想要UTF-8格式进行编码。当我尝试对字节进行编码时出现错误。因为我传入的字节是 8859-9 格式,我试图直接转换它们。首先,我将字节解码为 UTF-8 格式。我完成了我的过程,最后我使用编码器将这个 UTF-8 字节编码为 ISO8859-9 unicode。这是新代码。

//main package
bytes, err := textproc.R.ReadBytes(constant.EndTextDelimiter)
checkError(err)
msg := encoder.DecodeISO8859_9ToUTF8(bytes)
//..........
// Process that string, create struct Then convert struct to json bytes
// Then encode that bytes
json := encoder.EncodeUTF8ToISO8859_9(bytes)

//encoder package
package encoder
import "golang.org/x/text/encoding/charmap"

func DecodeISO8859_9ToUTF8(bytes []byte) string {
encoded, _ := charmap.ISO8859_9.NewDecoder().Bytes(bytes)
return string(encoded[:])
}

func EncodeUTF8ToISO8859_9(bytes []byte) string {
encoded, _ := charmap.ISO8859_9.NewEncoder().Bytes(bytes)
return string(encoded[:])
}

关于go - 通过 TCP 读取字节并在 Go 中编码为 ISO-8859-9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59173628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com