阅读iso-8859-1 rss feed C#WP7

我正在尝试读取使用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);
上一篇:如何使用PHP从内容中删除所有锚标记


下一篇:php ajax异步读取rss文档数据