5

我正在对客户端报告的一个奇怪问题进行故障排除,该问题是由应用程序尝试解析无效 XML 引起的。我认为根本原因与 XML 字符串的编码和解码方式有关。我有一个内部 API,它获取 XML 字符串(我知道它开始是有效的),然后将其转换为字节数组并用 readonly 包装它MemoryStream。然后在另一边,流被转换回字符串,然后传递给XDocument.Parse(string). 后一个调用失败,说“根级别的数据无效。第 1 行,第 1 位。” 无论如何,我相信根本原因与我如何编码然后解码字符串有关。事实上,以下调试代码行返回的字符串与传入的字符串不同。

Encoding.Default.GetString(Encoding.Default.GetBytes(GetMeAnXmlString())));

Encoding.Default在进入然后退出的过程中使用会产生与我开始时不同的字符串。这太疯狂了。有任何想法吗?

笔记:

我正在使用一个我无法更改的 API,它检索包含 XML 的流,因此我无法更改Encoding.Default. 这样做会给一切正常的客户带来生产问题(又名showstoppers)的风险。

4

1 回答 1

7

总而言之,由于 Weeble 提到的代码页方面,Encoding.Default 是粗略的。

http://msdn.microsoft.com/en-us/library/system.text.encoding.default%28v=vs.110%29.aspxhttp://blogs.msdn.com/b/shawnste/archive/ 2005/03/15/don-t-use-encoding-default.aspx

您最好还是决定使用 Encoding.Unicode 或 Encoding.UTF8。

于 2013-11-12T22:45:00.200 回答