在 Go 中处理非 UTF-8 XML 输入
当尝试使用 Go 的 xml 包中的 Unmarshal 函数解组 XML 输入时,如果输入不是以 UTF-8 编码,则可能会遇到问题。为了解决这个问题,需要一个 CharsetReader。
哪里可以找到 CharsetReader
幸运的是,Go 的 net/html 包提供了 charset.NewReaderLabel 形式的解决方案。此阅读器可以处理非 UTF-8 编码输入到 UTF-8 的转换。
2015 年及以后的更新解决方案
在 Go 的早期版本中,必须实现自定义 CharsetReader。然而,较新版本的 Go 使用 charset.NewReaderLabel 提供了更简单的解决方案。以下是更新的代码片段:
import ( "encoding/xml" "bytes" "golang.org/x/net/html/charset" ) // ... reader := bytes.NewReader(theXml) decoder := xml.NewDecoder(reader) decoder.CharsetReader = charset.NewReaderLabel err = decoder.Decode(&parsed)
通过使用 charset.NewReaderLabel 作为 CharsetReader,Unmarshal 函数现在可以成功处理非 UTF-8 编码的 XML 输入,而无需手动转换或自定义实现。
以上是如何在 Go 中处理非 UTF-8 编码的 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!