C# rss源输出中的错误字符

C# rss源输出中的错误字符,c#,asp.net,rss,C#,Asp.net,Rss,我使用以下方法连接到rss提要 var url = "http://blogs.mysite.com/feed/"; var sourceXmlFeed = ""; using (var wc = new WebClient()) { wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4"); sourceXmlFe

我使用以下方法连接到rss提要

var url = "http://blogs.mysite.com/feed/";
var sourceXmlFeed = "";

using (var wc = new WebClient())
{
    wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");
    sourceXmlFeed = wc.DownloadString(url);
}

var xrs = new XmlReaderSettings();
xrs.CheckCharacters = false;

var xtr = new XmlTextReader(new System.IO.StringReader(sourceXmlFeed));

var xmlReader = XmlReader.Create(xtr, xrs);

SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
然而,我在输出中得到了坏字符(如下所示),我认为这与编码有关

例如,2015年,我们正在争夺黄金

有人知道怎么解决这个问题吗

顺便说一下,我这样做是因为我无法使用更直接的方法(如下所示)而不会导致远程服务器返回错误:(443)。

var xmlReader = XmlReader.Create("http://blogs.mysite.com/feed);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);

由于xml中的编码检测不同于字符串中的编码检测,所以将xml作为字符串读取会导致编码问题

WebClient webClient = null;
XmlReader xmlReader = null;

try
{
   webClient = new WebClient();
   webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");

   xmlReader = XmlReader.Create(webClient.OpenRead(url));

   // Read XML here because in a finaly block the response stream and the reader will be closed.
}
finally
{
   if (webClient != null)
   { webClient.Dispose(); }

   if (xmlReader != null)
   { xmlReader .Dispose(); }
}

不幸的是,使用这段代码,我得到了相同的错误-远程服务器返回了一个错误:(443)。它的代码很好,但是这个feedI有一个问题。我再次测试了我的代码,它正常工作(注释被替换为
而(xmlReader.Read()){Console.WriteLine(xmlReader.Value);}
)。是否确实在标头中提供用户代理?如果没有它,站点将返回错误443。是,正在添加标题,但尚未尝试“while reader.read”。我使用的是syndicationfeed.load。将重试。这实际上可以在(xmlReader.Read()){Console.WriteLine(xmlReader.Value);}期间工作。不过,我想将一个xml文档加载到syndicationFeed.load中,它强类型化rss提要的元素。如何从xmlReader.Read方法实例化xmldocument只需使用
SyndicationFeed=SyndicationFeed.Load(xmlReader)
而不是
while(xmlReader.Read()){\*…*\}
。如果这不起作用,则显示SyndicationFeed.Load方法的实现。