为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
茅侃侃 2023-08-07 18:53:29
我是 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[:])代码工作正常。但编码与我想要的不同。这是接收服务的问题。有什么建议吗?
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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

}


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信