【问题标题】:Unreadable website source [duplicate]不可读的网站源 [重复]
【发布时间】:2015-08-14 12:58:28
【问题描述】:

我正在尝试使用 C# 下载本网站的源代码http://www.dotnetperls.com/net 并进行一些解析。我正在使用这个功能:

WebClient client = new WebClient();
string website = client.DownloadString("http://www.dotnetperls.com/net");

我得到的代码是不可读的,这里是它的摘录:

‹     „VoŰ8ý*Ü5Řţ!;q6UlárŰt ×öę ÷7%Ž,n(R%)˙XĂßý†¤ĺH¶€  IĎ{3śyCRYüÂTf÷–"YśF ,Y»0ľÔpŔ%Ők.ăÜLŁjG¦3>V»‡\(jcÍ×…}HiöşÖŞ–lT)Ă-W2¶Ş"W¨†
ĐKŞÓę8‡-g¶góŕ<âéGüq”
vŰÂf‘ÇXÝ´°Ű;ŹU

我在 Firefox 中查看了网站源代码,看起来还不错。我做错了什么?

【问题讨论】:

  • 你设置编码了吗?
  • 尝试设置HttpWebRequest类的自动解压,如http://stackoverflow.com/a/4567408/969278中所述
  • 如@hellowstone所说,可能是gzip压缩的,web客户端不会自动解压。

标签: c# webclient


【解决方案1】:

您应该在调用DownloadString之前使用网络客户端编码:

using(WebClient webClient = new WebClient())
{
   webClient.Encoding = Encoding.UTF8;
   string s = webClient.DownloadString("http://www.dotnetperls.com/net");
}

【讨论】:

  • 似乎对我不起作用,我将尝试不同的编码,看看是否有效。
  • 没有一种编码可以解决问题,我不知道是我还是网站。你有没有尝试运行这段代码?
  • 是的,在回答您的问题之前,我已经测试了代码。您可以设置一个断点并在 HTML 可视化工具中查看 s
  • s 是什么意思?
  • 变量string s = webClient.DownloadString("http://www.dotnetperls.com/net");
猜你喜欢
  • 2013-03-08
  • 1970-01-01
  • 2015-08-04
  • 2014-03-13
  • 2011-06-30
  • 2019-06-29
  • 2017-08-24
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多