使用WebRequest,当Url中的中文时,它会自动将中文编码成UTF-8的编码
但是发UTF8编码在很多Asp中无法识别
有没有办法让它编码成GB2312 ?

解决方案 »

  1.   

    string str="中文乱码";
    Response.Write("<script language='javascript'>window.location.replace('log_browse.aspx?Pass="+ HttpUtility.UrlEncode(str,System.Text.Encoding.GetEncoding("gb2312"))+"')</script>");
      

  2.   

    呵呵,不是楼上的这个意思
    例:
    string Uri="htttp://www.aaa.com?a=中文";
    WebRequest=WebRequest.Create(Uri);这样的话,发出去的请求中的“中文”两字就变成UTF8编码了,与JavaScript完全没有关系的
    有什么办法让WebRequest将中文编码成GB2312码吗?
      

  3.   

    string Uri="htttp://www.aaa.com?a="+HttpUtility.UrlEncode("中文",System.Text.UnicodeEncoding);
    即可http://sz.luohuedu.net/xml/ShowDetail.asp?id=YUEMA9OS-W1DN-4KIS-8RIE-S742LLJ91L6Q
      

  4.   

    参照http://dotnet.aspx.cc/ShowDetail.aspx??id=YUEMA9OS-W1DN-4KIS-8RIE-S742LLJ91L6Q
      

  5.   

    多谢 net_lover(孟子E章) 但是链接不是我拼的,是取过来的,所以要对一个整个的URL进行编码
    我现在是这样解决的自已写了一个方法来编码
    public static string UrlGBEncode(string Url)
    {
    string rtValue="";
    byte[] ubts=System.Text.UTF8Encoding.UTF8.GetBytes(Url);
    byte[] gbts;

    System.Text.Encoding GB2312 = System.Text.Encoding.GetEncoding("GB2312");
    gbts=System.Text.Encoding.Convert(System.Text.UTF8Encoding.UTF8, GB2312, ubts);
    for(int i=0;i<gbts.Length;i++)
    {
    if(gbts[i]>127)
    rtValue+="%" + System.Convert.ToString(gbts[i], 16);
    else
    rtValue+=(char)gbts[i];
    }
    return rtValue;
    }