我有一個下載程序,從互聯網上下載頁面。 每個頁面的編碼是不同的,有些是UTF-8,有些是Unicode。 例如:a
顯示'a'字符;我們應該將這些編碼轉換爲普通文本。如何將UTF-8轉換爲HTML實體中的文本?
我在c#中使用了UnicodeEncoding
類,但他們不幫我。
如何將此編碼解碼爲真實的字符?有沒有可以轉換它的類或方法?
謝謝。
我有一個下載程序,從互聯網上下載頁面。 每個頁面的編碼是不同的,有些是UTF-8,有些是Unicode。 例如:a
顯示'a'字符;我們應該將這些編碼轉換爲普通文本。如何將UTF-8轉換爲HTML實體中的文本?
我在c#中使用了UnicodeEncoding
類,但他們不幫我。
如何將此編碼解碼爲真實的字符?有沒有可以轉換它的類或方法?
謝謝。
這是html編碼的;嘗試HtmlDecode? (您需要System.Web.dll的引用)
您對HTML/XML轉義和UTF-8/Unicode之間的混淆。
如果頁面是有效的XML,生活將會變得更簡單 - 您可以將它解析爲任何其他XML文檔,然後獲取相關文本節點...所有XML轉義將在您獲得時「未轉義」文本。
如果它是任意的 - 也可能是無效的--HTML,那麼生活會有點困難。您可能首先需要將其標準化爲有效的HTML,然後解析並再次請求文本節點。
如果你能給我們一個更具體的例子,它會更容易建議你。
在其他答案中建議的HtmlDecode
方法可能是您所需要的全部 - 但您應該首先了解發生了什麼。例如,你可能想只有解碼HTML的某些片段 - 如果你解碼整個文檔,那麼你最終可能會看到看起來它包含像HTML標籤,但實際上只包含在原始文件。
HTML頁面中的文本以&開頭並以;結尾,爲HTML編碼。
您可以通過使用解碼這些:
string html = ...; //your html
string decoded = System.Web.HttpUtility.HtmlDecode(html);
另見Characters in string changed after downloading HTML from the internet關於如何確保您下載的頁面中正確的字符集編碼。
順便說一句:沒有像沒有編碼的「普通文本」。強烈推薦:http://www.joelonsoftware.com/articles/Unicode.html – Alex 2010-06-12 13:30:20
親愛的,Kenny請做好你的功課並糾正你的問題標題 - UTF8是編碼Unicode的幾種方法之一。這些也不像普通文本 - 可能你想說ANSI或ASCII。在這種情況下,不可能不丟失數據。 – sorin 2010-06-12 15:56:16