C# WebClient.DownloadString()结果在某些网站上存在编码问题!使用波斯语(波斯语)

C# WebClient.DownloadString()结果在某些网站上存在编码问题!使用波斯语(波斯语),c#,persian,C#,Persian,我想打开一个网站,并阅读其来源。 所以我写了这段代码: WebClient client = new WebClient(); htmlCode = client.DownloadString("http://www.varzesh3.com"); 但我有一个垃圾数据。 我也添加了这些代码,但仍然不起作用 client.Encoding = Encoding.UTF8; client.Headers.Add("charset", "utf-8"); 此外,我使用这些代码,但没有一个不起作用:

我想打开一个网站,并阅读其来源。 所以我写了这段代码:

WebClient client = new WebClient();
htmlCode = client.DownloadString("http://www.varzesh3.com");
但我有一个垃圾数据。 我也添加了这些代码,但仍然不起作用

client.Encoding = Encoding.UTF8; client.Headers.Add("charset", "utf-8");
此外,我使用这些代码,但没有一个不起作用:

byte[] raw = client.DownloadData("http://www.varzesh3.com");

string webData1 = Encoding.ASCII.GetString(raw);
string webData2 = Encoding.BigEndianUnicode.GetString(raw);
string webData3 = Encoding.Unicode.GetString(raw);
string webData4 = Encoding.UTF32.GetString(raw);
string webData5 = Encoding.UTF7.GetString(raw);
string webData6 = Encoding.UTF8.GetString(raw);
注: 我可以打开和阅读任何其他使用波斯语(波斯语)的网站,但我无法打开www.varzesh3.com
你能帮我吗?

该网站的结果已被压缩。你需要先把它解压缩。现在,通过使用MyWebClient,您将拥有:

using (var client = new MyWebClient { Encoding = Encoding.UTF8 })
{
    var test = client.DownloadString("http://www.varzesh3.com/");
}

这是因为网站使用压缩输出。 你应该把它解压缩

using (var hc = new HttpClient())
using (var stream = await hc.GetStreamAsync(@"http://www.varzesh3.com/"))
using (var gzstream = new GZipStream(stream, CompressionMode.Decompress))
using (var reader = new StreamReader(gzstream))
{
    var text = await reader.ReadToEndAsync();
    // do what you want with text
}

我的猜测是,该网站配置错误,因此其标题与内容不匹配…感谢您的指导,但我如何解决此问题?您可以下载原始字节,然后尝试确定应该使用什么编码…我使用下面的代码,但任何编码都不起作用:(:byte[]raw=client.DownloadData();字符串webData1=Encoding.ASCII.GetString(原始);字符串webData2=Encoding.BigendiaUnicode.GetString(原始);字符串webData3=Encoding.Unicode.GetString(原始);字符串webData4=Encoding.UTF32.GetString(原始);字符串webData5=Encoding.UTF7.GetString(原始);string webData6=Encoding.UTF8.GetString(原始);请更新我们的问题,而不仅仅是添加注释。