외국 문자를 가져 오는 이유는 무엇입니까? 어떻게 제거 할 수 있습니까?

c# html html-agility-pack string

문제

HTML 민첩성 팩을 사용하여 H3 태그의 InnerText를 가져올 때 원본과 비교하여 추가 문자 (Ã,)를 선택했습니다.

나는이 등장 인물이 어디서 왔는지, 어떻게 제거 할 지 모르겠습니다.

추출 된 문자열 :

 Week 1

HTML 출처 :

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

현재 코드 :

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);
    }
}

현재 해결 방법 (stackoverflow 어딘가에서 도난, 링크가 손실 됨) :

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);
}

수락 된 답변

당신이하기 전에 인코딩을 설정해야합니다 ...

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

이것은 민첩성 팩에 문자가 다른 인코딩이 아닌 UTF8임을 알려줍니다.

여기에서해야 할 이유는 이것이 적절하게 파싱되는 시점이라는 것입니다. 이 후에 리터럴 Ã, 문자를 저장하고 있습니다.

인터넷에서 HTML을 다운로드 한 후 변경된 문자열의 문자 도 중요 할 수 있습니다.


인기 답변

문자 인코딩 일 수도 있고 인코딩을 UTF-8로 설정할 수도 있습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.