0

私は例のためにこれを持っています: リンク

このコード:

const String nick = "Alex";
const String log = "http://demonscity.combats.com/zayavka.pl?logs=";
foreach (DateTime cd in dateRange)
{
string str = log + String.Format("{0:MM_dd_yy}", cd.Date) + "&filter=" + nick;
String htmlCode = wc.DownloadString(str);
}

何かを返します...."‹\ b \ 0 \ 0 \ 0 \ 0 \ 0 \ 0я•XYsЫЦ〜зЇёѕ™d)bг.тBҐ$ЪRЖ'<2УN&сh@р'„ \ f \ 0J –—_Фџђ§ ¤нt¦г6ќѕУЄђ0'IQtТґcµо№X(jі-Щ/Ђі| g?`yҐ¶ц"

他のリンクは正常に機能します。問題はコードページにあると思いますが、どうすれば修正できますか?それともサーバーの問題ですか?

4

2 に答える 2

8

問題は、応答がGZip圧縮されていることです(応答にはContent-Encoding: gzipヘッダーがあります)。最初に解凍する必要があります。そうすれば、次のように読み取ることができます。

public class StackOverflow_6660689
{
    public static void Test()
    {
        WebClient wc = new WebClient();
        Encoding encoding = Encoding.GetEncoding("windows-1251");
        byte[] data = wc.DownloadData("http://demonscity.combats.com/zayavka.pl?logs=08_07_11&filter=Alex");
        GZipStream gzip = new GZipStream(new MemoryStream(data), CompressionMode.Decompress);
        MemoryStream decompressed = new MemoryStream();
        gzip.CopyTo(decompressed);
        string str = encoding.GetString(decompressed.GetBuffer(), 0, (int)decompressed.Length);
        Console.WriteLine(str);
    }
}
于 2011-07-12T07:24:52.267 に答える
0

クライアントが明示的にフォーマットを受け入れない限り、gzipフォーマットで結果を返すことはできないと思います。

于 2011-07-12T07:25:24.420 に答える