5

どうやら Google のエンコーディングは html メタ タグに記載されているように UTF-8 です。しかし、ASP の WebRequest.GetResponse() で scharfes+s の検索ページを開くと、認識できない文字がいっぱいです。誰かがそこで何が起こっているのか知っていますか?

便宜上、コードを以下に貼り付けます

ASPページ

<form id="form1" runat="server">
<div>
    <div runat="server" id="output"/>
</div>
</form>

コードビハインド

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;

public partial class SearchEngineCaller : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpWebRequest queryPage = (HttpWebRequest)WebRequest.Create("https://www.google.com/search?q=scharfes+s");
        queryPage.Credentials = CredentialCache.DefaultCredentials;

        HttpWebResponse response = (HttpWebResponse)queryPage.GetResponse();

        Stream receiveStream = response.GetResponseStream();
        StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
        output.InnerHtml = readStream.ReadToEnd();
    }
}

返された結果

どのエンコーディングを使用すればよいですか?

4

1 に答える 1

3

HttpWebRequestオブジェクトにいくつかの HTTP ヘッダーを設定する必要があります。

HttpWebRequest queryPage = (HttpWebRequest)WebRequest.Create("https://www.google.com/search?q=scharfes+s");
queryPage.Credentials = CredentialCache.DefaultCredentials;
queryPage.Accept = "text/html";
queryPage.Headers["Accept-Charset"] = "utf-8";
queryPage.UserAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0";

重要: を設定するAccept-Charsetだけでは十分ではなく、 も設定することが重要ですUser-Agent(上記のユーザー エージェント文字列をhereからコピーしました)。私はこの解決策を試しましたが、うまくいきました(テストコード)。

于 2013-10-11T21:42:50.427 に答える