oRequest = (HttpWebRequest)WebRequest.Create("http://google?kuaisusearch.asp?msf="+webtradebig+"&key=&workplace=湖南省&registerdate=9999&CName=&pageno="+i);

HttpWebResponse oResponse = (HttpWebResponse)oRequest.GetResponse();
StreamReader oReader = new StreamReader(oResponse.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));
string str=oReader.ReadToEnd(),//问题在这里
oReader.Close();
oResponse.Close();
就是我在浏览器里面敲这个地址的时候没有错http://google?kuaisusearch.asp?msf="+webtradebig+"&key=&workplace=湖南省&registerdate=9999&CName=&pageno="+i
正确显示乱码,但是我在获取流的时候出了错str显示不出结果,因为oRequest.Uri的时候,他对这个地址的汉字进行了编码湖南省变成了%E8%B7%9F%E5%8D%95%E5%91%98&,所以显示的地址就打不开,str也不是我想要的结果

解决方案 »

  1.   

    try
    oRequest = (HttpWebRequest)WebRequest.Create("http://google?kuaisusearch.asp?msf="+webtradebig+"&key=&workplace=" + HttpUtility.UrlEncode("湖南省",System.Text.Encoding.GetEncoding("GB2312") ) + &registerdate=9999&CName=&pageno="+i);
      

  2.   

    思归大哥,你这个好像可以对汉字编码,但是如果不是汉字的话就会报错,因为传进来的这个参数
    webtradebig如果是汉字,进行编码之后就不会报错,如果是英文或者数字,他又会通不过,有个什么两全其美的方法没有,让他可以全部通过,谢谢
      

  3.   

    这样试试:
    string str = oReader.ReadToEnd();
    System.Text.Encoding objCode = System.Text.Encoding.GetEncoding("GB2312");            
    byte[] byteArray = objCode.GetBytes(Server.UrlDecode(str));
    str = objCode.GetString(byteArray);
      

  4.   

    把GB2312改成UTF-7或者UTF-8试一下
      

  5.   

    System.Web.HttpUtility.UrlEncode("湖南省abcde",System.Text.Encoding.Default)
    思归的方法没有错.
    以上述所写的方式,碰到非中文,不会出错.不知道楼主有没有确实尝试过呢?
    请建立一个单独的页面,试验上述语句
      

  6.   

    System.Web.HttpUtility.UrlEncode("湖南省abcde",System.Text.Encoding.GetEncoding("GB2312") )上面的方法没有错