带有中文的参数用System.Web.HttpUtility.UrlEncode()编码,接收时直接Request如:xxx.aspx?id=System.Web.HttpUtility.UrlEncode("中国");则可以在xxx.aspx中:Request["id"]

解决方案 »

  1.   

    一般用byte[]进行转换
    string strOld = "unicode的字符串";
    byte[] bytes = System.Text.encoding.default.GetBytes(strold);
    string strNew = System.Text.Encoding.GetEncoding("gb2312").getString(bytes);
      

  2.   

    System.Text.encoding.default.GetBytes(yourstring);
      

  3.   

    非常感谢,但是上面的办法都不行。可能我没有表达清楚。
    得到%B2%E2%CA%D4证明编码是没有错误的,页面向程序提交的时候会把中文转换成这种格式以在网上传播。现在的问题是如何能将这编码再转回中文。
    这个编码的中文是"测试"两个字。
      

  4.   

    在论坛里找到了答案。下面得是引用 xiaha3(夏) 的代码。
    public string check(string s1)
    {
    Encoding enc = Encoding.GetEncoding("GB2312");
    char c,d;
    byte a=0,b=0;

    byte[] bytes=new byte[s1.Length /2];
    char[] chars=new char[s1.Length];
    char[] chars1=s1.ToCharArray ();
    for(int i=0 ;i<chars1.Length ;i=i+2)
    {c=chars1[i];
    d=chars1[i+1];
    switch( c)
    {
    case 'A':
    a=(byte)10;
    break;
    case 'B':
    a=(byte)11;
    break;
    case 'C':
    a=(byte)12;
    break;
    case 'D':
    a=(byte)13;
    break;
    case 'E':
    a=(byte)14;
    break;
    case 'F':
    a=(byte)15;
    break;
    default:
    a=byte.Parse(chars1[i].ToString ());
    break;
    }
    switch(d)
    {
    case 'A':
    b=(byte)10;
    break;
    case 'B':
    b=(byte)11;
    break;
    case 'C':
    b=(byte)12;
    break;
    case 'D':
    b=(byte)13;
    break;
    case 'E':
    b=(byte)14;
    break;
    case 'F':
    b=(byte)15;
    break;
    default:
    b=byte.Parse (chars1[i+1].ToString ());
    break;
    }

    bytes[i/2]=(byte)(a*16+b);
    }
    string s=enc.GetString(bytes);
    int co=s.Length ;

    return s.ToString ();
    }