我在程序中发送一个关键词到baidu搜索,返回数据生成一个html文档,可是把返回的数据写入html后再用浏览器打开全是乱码,但是直接在程序中用webBrowser打开这个链接却是正常的,请教如何才能生成正常的html文件。多谢!//调用百度搜索
string input = HttpUtility.UrlEncode("关键词", Encoding.GetEncoding("gb2312"));
string sUrl = "http://www.baidu.com/s?bs=" + input + "&f=8&wd=intitle%3A" + input + "+filetype%3Adoc";
WebRequest wrq = WebRequest.Create(sUrl);//把返回结果写入文件html.html,再用浏览器打开全是乱码
WebResponse wrs = wrq.GetResponse();
Stream strm = wrs.GetResponseStream();
StreamReader sr = new StreamReader(strm);
string line;
while ((line = sr.ReadLine()) != null)
{
                StreamWriter swSaveFileList = File.AppendText("html.html");
                swSaveFileList.WriteLine(line);
                swSaveFileList.Flush();
                swSaveFileList.Close();
}//直接用webBrowser控件打开sUrl链接是正常的
webBrowser1.Navigate(sUrl);

解决方案 »

  1.   

    string param = "";   
    byte[] bs = Encoding.ASCII.GetBytes(param);   
    HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" ); req.Method = "POST";   
    req.ContentType = "application/x-www-form-urlencoded";   
    req.ContentLength = bs.Length;   
    using (Stream reqStream = req.GetRequestStream())   
    {} 
    中文
    Encoding myEncoding = Encoding.GetEncoding("gb2312"); 
    string param = HttpUtility.UrlEncode("", myEncoding); 
    byte[] postBytes = Encoding.ASCII.GetBytes(param); 
      

  2.   

    生成的sUrl没有问题,现在是返回的数据是乱码
      

  3.   

    Stream myResponseStream = myHttpWebResponse.GetResponseStream();
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
    outdata = myStreamReader.ReadToEnd();
      

  4.   

    经测试
    StreamReader myStreamReader = new StreamReader(myResponseStream);
    是一种乱码
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
    结果和
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.Default);
    效果一样,是另外一种乱码。
      

  5.   

    参数System.Text.Encoding.Default.GetBytes
    服务器传回的流是否使用了gzip方法压缩:
    System.IO.StreamReader r = new System.IO.StreamReader(new GZipStream(res.GetResponseStream(), CompressionMode.Decompress),encode);