xml - Go xml.Marshal 返回无效字符

标签 xml encoding go

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

str := string([]byte{0x01})
marshalBytes, _ := xml.Marshal(str)
fmt.Println(string(marshalBytes)) // output: <string>�</string>; � is [239 191 189] in bytes.

显然,� 不等于 0x01。

我该如何解决?

最佳答案

字节 [239 191 189] 是 Unicode Replacement Character 的 UTF-8 编码.

XML 编码器将字节 0x1 替换为 Unicode 替换字符,因为 字节 0x01 不是 legal character in XML .

不可能阻止 XML 编码器使用替换。

关于xml - Go xml.Marshal 返回无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404864/

相关文章:

php - 读取 Soap Response XML 并插入到 mysql 中

php - 使用 XMLReader 和 PHP 获取 XML 属性

C# 未从 HttpWebResponse 获得正确的响应。编码?

ubuntu - tr (ubuntu) 和 tr (mac) 之间的编码差异

去嵌套结构

go - 内存消耗猛增

java - 为什么 SAXParser 无法打开 URL?

将字符串编码为数字以便在 scikit-learn 中使用

c++ - 在64位系统上编译32位程序和调用64位程序

python - 解析xml时如何支持递归包含