[英]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-8
和ISO-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.