WebClient.DownloadStringは基本的に簡単な事をすることは厄介で間違いやすい作る限られた、ハイレベルな方法です。
HTTP経由でWebページを取得するのは簡単です。あなたはURLといくつかのリクエストヘッダを与えます。サーバーは、応答ヘッダーと本文のバイトストリームで応答します。応答ヘッダは通常、テキスト本文の文字エンコーディングを記述します。もしそうでなければ、本文はそれ自身を言うかもしれません。 HTMLAgilityPackはこれを理解し、そのインタラクションからHtmlAgilityPack.HtmlDocumentを作成するためのHtmlWebクラスを提供します。
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)
なぜあなたはまったく 'Encoding.Default'を使用していますか?なぜあなたは 'return item.Attributes [" content "]をしていないのですか? –
item.Attributes ["content"]。Valueを返すだけであれば、Japanesesの文字は表示されません。 v ̌ R 〜 @ScottChamberlain – Ben
どのように表示していますか?そのコードを表示します。また、 'Value'によって返された' string'オブジェクトもチェックしてください。デバッガの文字列を調べることで正しい値を持っているかどうか確認してください。それが正しい値を持っていない場合は、さらに元に戻って、 'item'があなたのデータソースが何であっても解析しない理由を理解する必要があります。 –