C # 및 HtmlAgilityPack 인코딩 문제

c# encoding html-agility-pack

문제

WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();

GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");

그래서이 코드는 "Skaitytojo klausimas psichologui : kas lemia homoseksualumã"â € | - Naujienà ... ³ 포털 Alfa.lt "대신"Skaitytojo klausimas psichologui : kas lemia homoseksualumÄ ...? - Naujienó³ portalas Alfa.lt "를 반환합니다.

이 웹 페이지는 1257 (baltic)로 인코딩되었지만 textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; 왜곡 된 텍스트를 반환합니다 - 발트 어 발음 구별 부호는 몇 가지 이상한 문자로 변환됩니다 긴 문자열 :(

그리고 네, HtmlAgilityPack 포럼을 시도했습니다. 그들은 빨기를한다.

추신 : 나는 프로그래머가 아니지만 커뮤니티 프로젝트에서 일하기 때문에이 코드를 작동시켜야합니다. 감사 ;}

수락 된 답변

실제로 페이지는 UTF-8로 인코딩됩니다.

GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);

작동합니다.

또는 HTTP 헤더 또는 메타 태그에서 인코딩을 감지하는 내 SO 응답 의 코드를 올바르게 다시 인코딩 할 수 있습니다. (또한 다운로드를 최소화하기 위해 gzip을 지원합니다.)

다운로드 클래스에서 코드는 다음과 같이 보입니다.

GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);

인기 답변

비슷한 인코딩 문제가있었습니다. HtmlAgilityPack의 최신 버전에서 WebClient 초기화에 다음을 추가하여 수정했습니다.

var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");



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