我正在解决客户端报告的一个奇怪的问题,该问题是由尝试解析无效XML的应用程序引起的.我认为根本原因与XML字符串如何编码然后解码有关.我有一个内部API来获取XML字符串(我知道它开始有效),然后将其转换为字节数组并用readonly包装它MemoryStream.然后在另一侧,流被转换回字符串,然后传递给XDocument.Parse(string).后一个调用失败,说"根级别的数据无效.第1行,第1位".无论如何,我认为根本原因与我如何编码然后解码字符串有关.实际上,以下调试代码行返回的字符串与传入的字符串不同.
Encoding.Default.GetString(Encoding.Default.GetBytes(GetMeAnXmlString())));
Run Code Online (Sandbox Code Playgroud)
Encoding.Default在进入的方式中使用然后退出会产生与我开始时不同的字符串.那是疯狂的.有任何想法吗?
注意:
我正在使用一个我无法更改的API,它检索包含XML的流,因此我无法改变使用Encoding.Default.如果一切正常,那么这样做会冒生产问题(也就是showstoppers).
由于Weeble提到的代码页面方面,Encoding.Default很粗略.
http://msdn.microsoft.com/en-us/library/system.text.encoding.default%28v=vs.110%29.aspx 和http://blogs.msdn.com/b/shawnste/archive/ 2005/03/15 /唐-T使用的编码,Default.aspx的
你决定使用Encoding.Unicode或Encoding.UTF8可能会更好.