Go xml.Marshal 返回无效字符

我使用下面的代码生成字符串 str 的 XML 编码:


str := string([]byte{0x01})

marshalBytes, _ := xml.Marshal(str)

fmt.Println(string(marshalBytes)) // output: <string>�</string>; � is [239 191 189] in bytes.

显然, 不等同于 0x01。


我该如何解决?


开心每一天1111
浏览 275回答 1
1回答

哈士奇WWW

字节 [239 191 189] 是Unicode Replacement Character的 UTF-8 编码。XML 封送拆收器将字节 0x1 替换为 Unicode 替换字符,因为字节 0x01在 XML 中不是合法字符。无法阻止 XML 封送拆收器使用替换。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go