【发布时间】:2015-10-02 19:29:55
【问题描述】:
我尝试将 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>
【问题讨论】:
-
您正在使用 Encoding.Default 打开文件。你确定它和你保存的一样吗?尝试使用 Encoding.GetEncoding("windows-1251") 打开它,因为它是保存时使用的编码
-
转换是什么意思?目前尚不清楚您要做什么。
XDocument(或内存中的任何字符串)在您对其进行编码之前没有编码 - 即直到您将其写入流。顺便说一句,你不应该使用XmlTextWriter,你应该使用XmlWriter.Create创建一个作家。 -
我使用 XmlTextWrite 删除 BOM。
-
目前还不清楚您要做什么。听起来您只需要
document.Save(_Stream)- 有什么问题? -
我使用了 document.Save(_Stream),在原始视图中得到了相同的结果。我在论坛上看到了这段代码
string text = File.ReadAllText("F:\\File", Encoding.GetEncoding(1251)); document.Declaration = new XDeclaration("1.0", "utf-8", "yes"); XDocument documentcode = XDocument.Parse(text);but 它不起作用/
标签: c# xml utf-8 linq-to-xml encode