¿Por qué estoy recogiendo caracteres extranjeros y cómo puedo eliminarlos?

c# html html-agility-pack string

Pregunta

Recojo caracteres adicionales (Ã ‚) en comparación con la fuente cuando tomo el texto interno de una etiqueta H3 usando el paquete de agilidad HTML.

No estoy seguro de dónde vienen estos personajes o cómo eliminarlos.

Cadena extraída:

 Week 1

Fuente HTML:

<h3>
<span> </span>Week 1</h3>

Código actual:

private void getWeekNumber(string url)
{
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

    htmlDoc.Load(new System.IO.StringReader(url));

    foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
    {
        MessageBox.Show(h3.InnerText);
    }
}

Solución alternativa actual (Robado de algún lugar en stackoverflow, perdió el enlace):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new System.IO.StreamReader(stream, Encoding.UTF8))
{
    result = reader.ReadToEnd();
}

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

htmlDoc.Load(new System.IO.StringReader(result));

foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
{
    MessageBox.Show(h3.InnerText);
}

Respuesta aceptada

Necesitas configurar la codificación antes de hacerlo ...

htmlDoc.Load(new System.IO.StringReader(url), Encoding.UTF8);

Esto le dice al paquete de agilidad que los caracteres son UTF8 en lugar de alguna otra codificación.

La razón por la que debe hacerlo aquí es que este es el punto en el que se analiza de forma incorregida. Después de esto estás almacenando los caracteres literales.

Los caracteres en la cadena cambiada después de descargar HTML de Internet también pueden ser de interés.


Respuesta popular

puede ser su codificación de caracteres, establezca la codificación en UTF-8



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué