どのようにC#でHTMLエンコーディングを取得するには?

c# encoding html html-agility-pack webclient

質問

私はウェブ辞書から特定の単語の発音を取得しようとしています。たとえば、次のコードでは、 http://collinsdictionary.comからgoodの発音を取得したい

(ここではHTTP Agility Packを使用しています)

static void test()
{
    String url = "http://www.collinsdictionary.com/dictionary/english/good";
    WebClient client = new WebClient();
    client.Encoding = System.Text.Encoding.UTF8;
    String html = client.DownloadString(url);
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);
    HtmlAgilityPack.HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"good_1\"]/div[1]/h2/span/text()[1]");
    if (node == null)
    {
        Console.WriteLine("XPath not found.");
    }
    else
    {
        Console.WriteLine(node.WriteTo());
    }
}

私は期待していました

static void test()
{
    String url = "http://www.collinsdictionary.com/dictionary/english/good";
    WebClient client = new WebClient();
    client.Encoding = System.Text.Encoding.UTF8;
    String html = client.DownloadString(url);
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);
    HtmlAgilityPack.HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"good_1\"]/div[1]/h2/span/text()[1]");
    if (node == null)
    {
        Console.WriteLine("XPath not found.");
    }
    else
    {
        Console.WriteLine(node.WriteTo());
    }
}

私が最高に得ることができるものは

static void test()
{
    String url = "http://www.collinsdictionary.com/dictionary/english/good";
    WebClient client = new WebClient();
    client.Encoding = System.Text.Encoding.UTF8;
    String html = client.DownloadString(url);
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);
    HtmlAgilityPack.HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"good_1\"]/div[1]/h2/span/text()[1]");
    if (node == null)
    {
        Console.WriteLine("XPath not found.");
    }
    else
    {
        Console.WriteLine(node.WriteTo());
    }
}

それをどうやって得るの?

受け入れられた回答

問題は、テキストの解析ではなく、むしろコンソール出力の問題です。コマンドラインアプリケーションからこれを行う場合は、コンソールの出力エンコードをUnicodeに設定することができます:

Console.OutputEncoding = System.Text.Encoding.Unicode;

また、コンソールのフォントがUnicodeをサポートするフォントであることを確認する必要があります。詳細については、この回答を参照してください。


人気のある回答

あなたがページエンコーディングを知っているなら(例えばSystem.Text.Encoding.UTF8);

string html = DownloadSmallFiles_String(url, System.Text.Encoding.UTF8, 20000);

自動エンコード検出を使用する(サーバーの応答に依存する)

string html = DownloadSmallFiles_String(url, System.Text.Encoding.UTF8, 20000);

最後にhtmlを読み込みます

string html = DownloadSmallFiles_String(url, System.Text.Encoding.UTF8, 20000);

以下のコードを試してください

string html = DownloadSmallFiles_String(url, System.Text.Encoding.UTF8, 20000);



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ