Usuário com melhor resposta
InnerHtml caracteres especiais

Pergunta
-
Pessoal,
Tenho uma aplicação em c# que está lendo uma página utilizando o HtmlAgilityPack e estou conseguindo fazer o que preciso, porém quando utilizo o InnerHTML pra me retornar o texto, quando tem algum caractere especial, por exemplo um "Ç" ou um "ã" ele não reconhece. Quando debugo fica com um caractere "?" no lugar.
Ao procurar na internet verifiquei que o problema é resolvido utilizando o HttpUtility.HtmlDecode(). Porém, tentei utilizar e continuou acontecendo o mesmo problema.
Alguma dica para conseguir pegar o texto do jeito que vem?
Obrigado!
Respostas
-
Tenta assim então....acho que o encoding da página ta vindo errado.
HtmlWeb htmlweb = new HtmlWeb(); web.AutoDetectEncoding = false; web.OverrideEncoding = Encoding.UTF8; HtmlDocument doc = htmlweb.Load("http://www.globo.com/"); HtmlNode[] links = doc.DocumentNode.SelectNodes("//a]").ToArray(); for (int i = 0; i < links.Length; i++) { string texto = WebUtility.HtmlDecode(links[i].InnerText); }
Testa e posta aqui seu resultado ;)
Abraços !
Diego Murakami
- MCP, MS
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.- Marcado como Resposta .NET Developer iniciante quarta-feira, 21 de maio de 2014 15:00
Todas as Respostas
-
Amigo, boa tarde.
Por acaso você pode mandar seu código aqui para que possamos dar uma olhada ?
Não sou especialista nesse helper, mas acredito que há algo na hora de instanciar suas classes do HTMLAgilityPack que possa ser configurado para um Encoding específico, e nesse momento você está omitindo tal configuração.
Abraços !
Diego Murakami
- MCP, MS
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida. -
Opa, claro, dá uma olhada:
HtmlWeb htmlweb = new HtmlWeb(); HtmlDocument doc = htmlweb.Load("http://www.globo.com/"); HtmlNode[] links = doc.DocumentNode.SelectNodes("//a]").ToArray(); for (int i = 0; i < links.Length; i++) { string texto = WebUtility.HtmlDecode(links[i].InnerText); }
Tentei com o InnerHTML e o com InnerText. Os dois retornam tipo assim: "Cota��o"
-
-
-
Tenta assim então....acho que o encoding da página ta vindo errado.
HtmlWeb htmlweb = new HtmlWeb(); web.AutoDetectEncoding = false; web.OverrideEncoding = Encoding.UTF8; HtmlDocument doc = htmlweb.Load("http://www.globo.com/"); HtmlNode[] links = doc.DocumentNode.SelectNodes("//a]").ToArray(); for (int i = 0; i < links.Length; i++) { string texto = WebUtility.HtmlDecode(links[i].InnerText); }
Testa e posta aqui seu resultado ;)
Abraços !
Diego Murakami
- MCP, MS
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.- Marcado como Resposta .NET Developer iniciante quarta-feira, 21 de maio de 2014 15:00
-