我正在尝试读取使用iso-8859-1编码的rss feed.
我可以把所有元素都搞定,问题是当我把它放在一个文本块中时它不会显示所有字符.我不确定我做错了什么.我尝试了一些我在谷歌上找到的解决方案,但这对我不起作用.我一定是错过了什么……这也是我第一次真正使用utf-16以外的任何东西.我以前从未改变任何东西.
该应用程序如下工作我downloadstring async(WebClient).因此,当调用它时,我会得到一个包含完整rss feed的字符串.
我试过获取字节,然后编码.convert ..但我必须遗漏一些东西.
像这样是一个样本
WebClient RSS = new WebClient();
RSS.Encoding = Encoding.GetEncoding("ISO-8859-1");
RSS.DownloadStringCompleted += new DownloadStringCompletedEventHandler(RSS_DSC);
RSS.DownloadStringAsync(new Uri("some rss feed"));
public void RSS_DSC(object sender, DownloadStringCompletedEventArgs args)
{
_xml = XElement.Parse(args.Result);
foreach(XElement item in _xml.Elements("channel").Elements("item"))
{
feeditem.title = item.Element("title").Value;
// + all other items
}
}
我也试过这个
private void RSS_ORC(object sender, OpenReadCompletedEventArgs args)
{
Encoding e = Encoding.GetEncoding("ISO-8859-1");
Stream ez = args.Result;
StreamReader rdr = new StreamReader(ez, e);
XElement _xml = _xml = XElement.Parse(rdr.ReadToEnd());
feedlist = new List<Code.NewsItem>();
XNamespace dc = "http://purl.org/dc/elements/1.1/";
foreach (XElement item in _xml.Elements("channel").Elements("item"))
{
Code.NewsItem feeditem = new Code.NewsItem();
feeditem.title = item.Element("title").Value;
feeditem.description = item.Element("description").Value;
feeditem.pubdate = item.Element("pubDate").Value;
feeditem.author = item.Element(dc + "creator").Value;
feedlist.Add(feeditem);
}
listBox1.ItemsSource = feedlist;
}
虽然标题包含的字符也不能很好地显示.喜欢..我可以让编码部分工作.而不是这些字符:带有问号,问号或单个方格的正方形.
不要误会我的意思我是一个初学者.但是,已发布在网络上的解决方案并没有为我解决.
请注意,我删除了编码部分,因为它无法正常工作:/
如果有人能够帮助我那将是惊人的.
解决方法:
您可以在调用client.DownloadStringAsync之前通过设置编码来指定编码:
webClient.Encoding = Encoding.GetEncoding("iso-8859-1")
在您的代码示例中,您不会在任何地方创建XML文档.有些代码丢失了吗?您应该使用以下内容对其进行初始化:
var xml = XDocument.Load((string)args.Result);