簡體   English   中英

如何在 C# 中更改讀取 RSS XML 的編碼

[英]How to change encoding of read RSS XML in C#

我想為我最喜歡的網站創建 RSS,但問題是它的 RSS XML 包含第一行,在解析時會破壞整個 RSS。

我收到此錯誤:

System does not support 'ISO-8859-2' encoding. Line 1, position 31.

代碼:

void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{
      SyndicationFeed feed;
      try {
           using (XmlReader reader = XmlReader.Create(e.Result)) { 
               // I WOULD LIKE to delete some rows from the Result
               feed = SyndicationFeed.Load(reader);
               lista.ItemsSource = feed.Items;
            }
       } catch (WebException we) { 
            MessageBox.Show("The internet connection is down.");
       }
}

顯然,WP7 中使用的 .NET 框架不支持除UTF-8ISO-8859-1之外的其他編碼。 您可以做的是使用此工具生成您自己的編碼實現。

然后,您使用自定義編碼通過StreamReader繞道讀取流:

using ( StreamReader sReader = new StreamReader(e.Result, new CustomEncoding()) )
using ( XmlReader xReader = XmlReader.Create(sReader) ) 
{ 
    //...
}

您可以嘗試重新編碼e.Result 中的字符串,也許通過使用 .NET 中的Encoding.Convert方法。 但這可能還不夠,因為我假設 xml-code 中有一個 encoding="ISO-8859-2" 屬性。 所以你可能還需要用其他東西做一個 String.Replace 那個屬性。

或者只是嘗試用另一個屬性替換該屬性,看看是否有效。 做一個 e.Result.Replace("ISO-8859-2", "UTF-8") 看看會發生什么。 如果這不起作用,請嘗試將字符串編碼轉換為另一個編碼,然后再轉換為替換的第一個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM