WebClient.DownloadString()结果与某些网站存在编码问题!波斯语
本文关键字:存在 网站 编码 问题 波斯语 DownloadString 结果 WebClient | 更新日期: 2023-09-27 18:28:41
我想打开一个网站并阅读它的来源。所以我写了这个代码:
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/");
}
这是因为网站使用gzip来压缩输出。你应该解压缩它
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
}