WebClient.DownloadString는 어려운 오류가 발생하기 쉬운 근본적 간단한 작업을 수행 할 수있게 제한 고수준 방법.
HTTP를 통해 웹 페이지를 가져 오는 것은 간단합니다. URL과 일부 요청 헤더를 제공합니다. 서버는 응답 헤더와 본문의 바이트 스트림으로 응답합니다. 응답 헤더는 일반적으로 텍스트 본문의 문자 인코딩을 나타냅니다. 그렇지 않으면 텍스트 본문 자체가 말할 수 있습니다. HTMLAgilityPack은이를 이해하고 해당 상호 작용에서 HtmlAgilityPack.HtmlDocument를 만들 수있는 HtmlWeb 클래스를 제공합니다.
왜 전혀`Encoding.Default`를 사용하는
var document = new HtmlWeb().Load("http://www3.nhk.or.jp/news/");
var keywords = document.DocumentNode
.SelectSingleNode("//meta[@name='keywords']")
.Attributes["content"]?.Value;
Console.WriteLine(keywords);
Console.WriteLine([email protected]"
StreamEncoding: {document.StreamEncoding?.EncodingName}
DeclaredEncoding: {document.DeclaredEncoding?.EncodingName}
Encoding: {document.Encoding?.EncodingName}");
NHK,ニュース,NHK NEWS WEB
StreamEncoding: Unicode (UTF-8)
DeclaredEncoding:
Encoding: Unicode (UTF-8)
? 또한 왜 당신은'return item.Attributes [ "content"]. –
item.Attributes [ "content"]. 값을 반환하면 Japaneses 문자가 표시되지 않습니다. v ̌ R ~ @ScottChamberlain – Ben
어떻게 표시하고 있습니까? 그 코드를 보여주세요. 또한'Value'가 반환 한'string' 객체를 검사하십시오. 디버거에서 문자열을 검사하여 올바른 값을 가지고 있는지 확인하십시오. 올바른 값을 가지고 있지 않다면, 다시 돌아가서'item'이 당신의 데이터 소스가 무엇이든지간에 파싱을하지 않는 이유를 찾아야합니다. –