Как преобразовать UTF-8 в текст в HTML-сущности? - PullRequest
4 голосов
/ 12 июня 2010

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

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

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

Спасибо.

Ответы [ 3 ]

6 голосов
/ 12 июня 2010

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

5 голосов
/ 12 июня 2010

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

Вы можете расшифровать их, используя:

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

Также см. Символы в строке изменены после загрузки HTML из Интернета для получения кода о том, как обеспечить загрузку страницы в правильном наборе символов.

1 голос
/ 12 июня 2010

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

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

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

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

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

...