UrlDecode

来源:互联网 发布:手机淘宝店铺被关闭 编辑:程序博客网 时间:2024/05/22 19:16

  private void button1_Click(object sender, System.EventArgs e)
  {
   string test = "%C4%E3%BA%C3%B0%A1+sdfsfa%26";
   MessageBox.Show(UrlDecode(test));
  }

  string HexToStr(string HexSource)
  {   
   string rltstr = "";
   byte[] rltByte = new byte[HexSource.Length / 2];
   for(int i=0; i<HexSource.Length; i+=2)
   {
    string str = Convert.ToInt32(HexSource.Substring(i, 2), 16).ToString();
    rltByte[i/2] = Convert.ToByte(HexSource.Substring(i, 2), 16);
   }
   rltstr = System.Text.Encoding.Default.GetString(rltByte);
   return rltstr;
 
  }


  string UrlDecode(string source)
  {
   string deStr = "";
   string tmpStr = "";
   string tmpStr2 = "";
   string unSafestr = "!/"#$%&'()*+,/:;<=>?@[//]^`{|}~";
   for (int i = 0; i < source.Length -1; i++)
   {
    tmpStr = source.Substring(i,1);
    if (tmpStr == "%")
    {
     tmpStr2 = source.Substring(i+1, 2);
     if (unSafestr.IndexOf(HexToStr(tmpStr2)) != -1)
     {
      deStr += HexToStr(tmpStr2);
      i += 2;
     }
     else
     {
      tmpStr2 = source.Substring(i+1, 2) + source.Substring(i+4, 2);
      deStr += HexToStr(tmpStr2);
      i += 5;
     }
    }
    else
    {
     if (tmpStr == "+")
      deStr += " ";
     else
      deStr += tmpStr;
    }
   }
   return deStr;
  }

原创粉丝点击