URLEncode()是在web项目中将汉字进行转码的,但是在winform项目中如何实现类似将“中国”变为“%D6%D0”的转换

解决方案 »

  1.   

    string s = "中国";
    byte[] data = Encoding.GetEncoding(936).GetBytes(s);
    //非Linq写法
    StringBuilder builder = new StringBuilder();
    foreach (byte b in data)
    {
        builder.Append("%" + b.ToString("X2"));
    }
    string result = builder.ToString();
    //linq的写法
    result = string.Join("%", data.Select(b => b.ToString("X2")).ToArray());
      

  2.   


            public static string UrlEncode(string originalString)
            {
                byte[] bytes = Encoding.Default.GetBytes(originalString);
                System.IO.StringWriter stringWriter = new System.IO.StringWriter();
                for (int i = 0; i < bytes.Length; i++)
                {
                    byte b = bytes[i];
                    if (((b >= 48) && (b <= 57)) 
                    || ((b >= 65) && (b <= 90)) 
                    || ((b >= 97) && (b <= 122))) 
                    {
                        stringWriter.Write((char)b);
                    }
                    else if (b == 32)
                    {
                        stringWriter.Write("+");
                    }
                    else
                    {
                        stringWriter.Write("%{0:x2}", b);
                    }            }
                return stringWriter.ToString();
            }
      

  3.   

    本帖最后由 lxcnn 于 2010-11-27 21:57:43 编辑
      

  4.   

    System.Web.HttpUtility.UrlEncode("", Encoding.GetEncoding("gb2312"))