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

我是 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[:])

代码工作正常。但编码与我想要的不同。这是接收服务的问题。有什么建议吗?


茅侃侃
浏览 107回答 1
1回答

青春有我

charmap.ISO8859_9.NewEncoder().Bytes() 函数想要 UTF-8 格式进行编码。当我尝试对字节进行编码时出现错误。因为我传入的字节是 8859-9 格式,我试图直接转换它们。首先,我将字节解码为 UTF-8 格式。我完成了我的过程,最后我使用编码器将这个 UTF-8 字节编码为 ISO8859-9 unicode。这是新代码。//main packagebytes, 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 bytesjson := encoder.EncodeUTF8ToISO8859_9(bytes)//encoder packagepackage encoderimport "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[:])}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go