【问题标题】:Deserialize XML with UTF-16 encoding in ServiceStack.Text在 ServiceStack.Text 中使用 UTF-16 编码反序列化 XML
【发布时间】:2025-12-03 22:25:01
【问题描述】:

我正在尝试使用 ServiceStack.Text 反序列化一些 XML。

代码:

var buildEvent = dto.EventXml.FromXml<TfsEventBuildComplete>();

开头的 xml 行是:

<?xml version="1.0" encoding="UTF-16"?>

ServiceStack 失败并出现以下错误:

声明“utf-16”中的编码与文档“utf-8”的编码不匹配。

我可以从 Xml Serializer 的源代码中看到 ServiceStack 使用 UTF-8。

我想知道 ServiceStack.Text 是否可以反序列化 UTF-16,如果可以,如何反序列化?如果没有,为什么不呢?

【问题讨论】:

  • 我遇到了同样的问题,最终得到了和你一样的解决方案。

标签: character-encoding servicestack xml-deserialization servicestack-text servicestack-bsd


【解决方案1】:

我已经设法解决了这个问题。我并不为此感到自豪,但是......

var buildEvent = dto.EventXml.Replace("utf-16", "utf-8").FromXml<TfsEventBuildComplete>();

【讨论】: