我尝试将XDocument从win-1转换为utf-8。但在原始视图中,俄罗斯人物观点不好。
var encoding = new UTF8Encoding(false,false);
XmlTextWriter xmlTextWriter = new XmlTextWriter("F:\\File", Encoding.GetEncoding("windows-1251"));
document.Save(xmlTextWriter);
xmlTextWriter.Close();
xmlTextWriter = null;
string text = File.ReadAllText("F:\\File", Encoding.Default);
XDocument documentcode = XDocument.Parse(text);
xmlTextWriter = new XmlTextWriter(_Stream, encoding);
documentcode.Save(xmlTextWriter);
xmlTextWriter.Flush();
_Stream.Position = 0;
Headers.ContentType = new MediaTypeHeaderValue("application/xml");
这是SOAPUI中的原始视图
<?xml version="1.0" encoding="utf-8"?><StatObservationList><StatObservation><ObjectID>0b575ec1-7dea-41c4-a1f0-287190715ed2</ObjectID><Name>Тестовое статнаблюдение</Name><Code>GPPCode42</Code></StatObservation><StatObservation><ObjectID>3a871ea1-06ee-4991-a263-d643b424bdd4</ObjectID><Name>МиСП</Name><Code /></StatObservation></StatObservationList>
答案 0 :(得分:0)
我想我现在已经得到了它。无论出于何种原因,XDocument
中的文字都使用Windows-1251进行了错误解码。
理想情况下,您需要返回源并确保正确解码(使用UTF8)。转换它可能不是一个完全没有损失的过程,因为UTF8中的代码点在Windows-1251中没有表示(快速浏览code page没有显示{{1}例如)。
但是,要事后转换它,最简单的方法就是将文本恢复,获取解码后的编码字节,然后使用正确的编码对其进行解码:
0x98