2010-06-12 8 views
4

У меня есть программа-загрузчик, которая загружает страницы из Интернета. Кодирование каждой страницы отличается, некоторые из них находятся в UTF-8, а некоторые из них - Unicode. Например: a, который показывает символ 'a'; страниц, заполненных этими символами. Мы должны преобразовать эти кодировки в обычный текст.Как преобразовать UTF-8 в текст в объекте HTML?

Я использовал класс UnicodeEncoding в C#, но они мне не помогают.

Как я могу декодировать эти кодировки реальным персонажам? Есть ли класс или метод, которые преобразуют это?

Спасибо.

+0

В стороне: нет ничего похожего на «обычный текст» без кодирования. Очень рекомендуется: http://www.joelonsoftware.com/articles/Unicode.html – Alex

+0

Дорогой, Кенни, пожалуйста, сделайте домашнее задание и исправьте название вопроса - UTF8 является одним из нескольких способов кодирования Unicode. Также это не так, как обычный текст - возможно, вы хотели сказать ANSI или ASCII. В этом случае это невозможно без потери данных. – sorin

ответ

6

Это html-encoded; попробуйте HtmlDecode? (вам понадобится ссылка на System.Web.dll)

1

Вы путаетесь между экранированием HTML/XML и UTF-8/Unicode.

Если страница действительна XML, жизнь будет проще - вы можете просто проанализировать ее как любой другой документ XML, а затем просто получить соответствующие текстовые узлы ... все экранирование XML будет «неэкономлено», когда вы получите текст.

Если это произвольно - и, возможно, недействительно - HTML, то жизнь немного сложнее. Возможно, вам захочется сначала нормализовать его в действительный HTML, затем проанализировать его и снова запросить текстовые узлы.

Если вы можете дать нам более конкретный пример, вам будет легче посоветовать вам.

Метод HtmlDecode, предложенный в других ответах, вполне может быть всем, что вам нужно - но вы должны определенно попытаться понять, что происходит в первую очередь. Например, вам может понадобиться только декодировать некоторые фрагменты HTML - если вы декодируете весь документ, тогда вы можете получить текст, который выглядит, он содержит, как HTML-теги, но на самом деле просто содержал текст в оригинале документ.

5

Текст в html-страницах, которые в форме начинаются с & и заканчиваются на;, кодируются в формате HTML.

Вы можете расшифровать их с помощью:

string html = ...; //your html 
string decoded = System.Web.HttpUtility.HtmlDecode(html); 

Также см Characters in string changed after downloading HTML from the internet для кода о том, как убедиться, что вы загрузите страницу в правильном наборе символов.