用winform做的一个爬虫获取网站源码。url获取到的是乱码怎么弄?

图片说明

点击这个按钮,我这个responseText输出的网站源码,软件工程师都是乱码。
private void button1_Click(object sender, EventArgs e)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
string url = "http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=000000%2C00&district=000000&funtype=0000&industrytype=00&issuedate=9&providesalary=99&keyword=%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88&keywordtype=2&curr_page=1&lang=c&stype=2&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=1&list_type=0&fromType=14&dibiaoid=0&confirmdate=9";
while (true)
{
//string formData = url.Substring(url.IndexOf('1') + 1);
byte[] requestBuffer = Encoding.UTF8.GetBytes(url);
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestBuffer.Length;
request.KeepAlive = true;
request.Host = "search.51job.com";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36";
request.Referer = url;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(requestBuffer, 0, requestBuffer.Length);
requestStream.Close();
}
response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312")))
{
string responseText = reader.ReadToEnd();
}
}
}

不是乱码,是中文被编码过了。你要还原为中文用

         Response.Write(HttpUtility.UrlDecode("%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88", Encoding.GetEncoding(65001)));

编码换成gbk返回前台,或着其他编码

这个网址可以打开,感觉不是乱码,后面?后面都是跟的参数。

不是乱码,后面?都是跟的参数。

赞同一楼,乱码应该是中文,一楼应该是给出了解决方案的

乱码什么样的?应该要用 HtmlDecode解码一下。

浏览器默认采用encodeURI()对中文字符进行编码(我是这样认为的,并且只有Firefox和Chrome才自动对中文进行编码,IE不会),

采用的字符集好像都是utf-8。

在前台可以用decodeURI()进行解码,在后台可以用UrLDecoder.decode(str,"utf-8")进行解码。