2013-08-22 32 views
1

我下載了一個網頁,它包含有這種類型的報價標誌着引號編碼在C#

段落「我簡單的提取這條線從HTML頁面」

,但是當我寫再到文件,則該「字符未正確顯示。

WebClient wc = new WebClient(); 
Stream strm = wc.OpenRead("http://images.thenews.com.pk/21-08-2013/ethenews/t-24895.htm"); 
StreamReader sr = new StreamReader(strm); 
StreamWriter sw = new StreamWriter("D://testsharp.txt"); 
String line; 
Console.WriteLine(sr.CurrentEncoding); 

while ((line = sr.ReadLine()) != null) { 
    sw.WriteLine(line); 
} 
sw.Close(); 
strm.Close(); 
+2

「但是當我寫入文件然後這個」字符沒有正確顯示「。 - 那麼*顯示什麼*,你怎麼看? (在調試器中的文本編輯器中?) –

+0

另外:你知道源代碼的編碼嗎?嘗試明確指定,以便它不必做任何假設; '''字符不是ASCII,所以編碼非常重要 –

+0

我正在查看文本編輯器中的sublime文本,並且顯示了這個字符。 – SoftRock

回答

1

如果你想要做的就是將文件寫入到磁盤,然後:使用Stream API 直接,或(更容易)只需使用:

wc.DownloadFile("http://images.thenews.com.pk/21-08-2013/ethenews/t-24895.htm", 
    @"D:\testsharp.txt"); 

如果你不」把它看成二進制的,那麼你需要擔心編碼 - 僅僅看sr.CurrentEncoding是不夠的,因爲我們不能確定它正確地檢測到它。它可能是編碼被報告在HTTP標頭,這將是很好的。它可以是也可以是是在有效載荷開始時在BOM中指定編碼。但是,在HTML的情況下,編碼也可以在HTML內指定。在所有這三種情況下,將文件視爲二進制文件都會改進(對於BOM和內部html文件,它將完全修復)。

+0

我想以richTextBox形式顯示該文本。 – SoftRock

+0

然後使用'DownloadString',但請注意,如果您的編碼錯誤,您仍會遇到問題。 –