System.Net.WebRequest rq = System.Net.WebRequest.Create(url);
url地址带中文比如 http://www.aa.com/test.asp?name=安定法
WebRequest 应该是 发送 utf8的请求吧,而他那边是用gb2312接收的,那么会导致他那边的querystring接收的是乱码,怎么解决啊??各位大虾。

解决方案 »

  1.   

    问题解决了
    protected string UrlEncode(string url)
    {
    byte[] bs=Encoding.GetEncoding("GB2312").GetBytes(url);
    StringBuilder sb=new StringBuilder();
    for(int i=0;i<bs.Length;i++)
    {
    if(bs[i]<128)
    sb.Append((char)bs[i]);
    else
    {
    sb.Append("%"+bs[i++].ToString("x").PadLeft(2,'0'));
    sb.Append("%"+bs[i].ToString("x").PadLeft(2,'0'));
    }
    }
    return sb.ToString();
    }
    发送时候用该函数把url编码一下。
      

  2.   

    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
    Byte[] byte1 =  encoding.GetBytes(XMLDoc.OuterXml);
    WebRequest HttpWReq = WebRequest.Create(InterfaceURL);
    HttpWReq.ContentType = "text/xml";
    HttpWReq.ContentLength = XMLDoc.OuterXml.Length;
    HttpWReq.Method = "POST";
    System.IO.Stream StreamData = HttpWReq.GetRequestStream();
    StreamData.Write(byte1,0,byte1.Length);
    StreamData.Close();
    WebResponse HttpWRes = HttpWReq.GetResponse();
    System.IO.Stream receiveStream = HttpWRes.GetResponseStream();
      

  3.   

    WebRequest HttpWReq = WebRequest.Create("http://www.aa.com/test.asp");
    Byte[] byte1 =  System.Text.Encoding.GetEncoding("GB2312").GetBytes("name=...");
    HttpWReq.ContentType = "application/x-www-form-urlencoded";
    HttpWReq.ContentLength = byte1.Length;//XMLDoc.OuterXml.Length;
    HttpWReq.Method = "POST";
    System.IO.Stream StreamData = HttpWReq.GetRequestStream();
    StreamData.Write(byte1,0,byte1.Length);
    StreamData.Close();
    WebResponse HttpWRes = HttpWReq.GetResponse();
    System.IO.Stream receiveStream = HttpWRes.GetResponseStream();
      

  4.   

    你可以用“Http.UrlEncode”这个方法,要比你自己操作来的简单
    参看
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfsystemwebhttputilityclassurlencodetopic3.htm
      

  5.   

    传递和接收的信息都要用 byte 流发送,不能直接发送的。
    例子:
    发送和读取时都要用相同的编码方式才行
    这是发送:
    postData = "msg=xxxx";
    byte[] data = encoding.GetBytes(postData);
    Stream myStream = HttpWebRequest.GetRequestStream();
    myStream.Write(data, 0, data.Length);读取:
    Stream stream = HttpWebResponse.GetResponseStream();
    sHtml = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();
      

  6.   

    HttpUtility.UrlEncode 
    现成的不用,还那么麻烦