Символы заменяются знаком вопроса при разборе HTML - PullRequest
2 голосов
/ 04 ноября 2011

Я использую HtmlAgilityPack, чтобы прочитать синтаксический анализ html-файла и извлечь некоторый текст:

static void Main(string[] args)
        {
            var webGet = new HtmlWeb();
            var document = webGet.Load("http://port.ro/");

            var programs = from program in document.DocumentNode.Descendants()
                           where program.Name == "a" && program.Attributes["href"] != null && program.InnerText.Trim().Length > 0
                           select program.InnerText ;

            foreach (string s in programs)
            {
                Console.WriteLine(s);
            }

            Console.ReadLine();
        }

Моя проблема в том, что веб-сайт содержит символы типа à, и когда я их печатаю, они заменяются на ?.

Что мне нужно сделать, когда я печатаю текст, символ à заменяется на a или печатается как à?

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

В HtmlAgility есть свойство для установки кодирования потока (обычно это должно автоматически определять кодировку), но, возможно, не работает для вашей страницы .. (неправильные мета-теги и т.

1 голос
/ 04 ноября 2011

Вы пытались использовать или установить кодировку, необходимую для сайта. Это должно помочь вам получить правильный текст

var document = webGet.Load ("http://port.ro/", Encoding.UTF8); // проверить кодировку

Выше одного для htmldocument

для HtmlWeb Попробуйте это :

var web = new HtmlWeb
{
    AutoDetectEncoding = false,
    OverrideEncoding = myEncoding,
};
var doc = web.Load(myUrl);
...