public static string Escape(string s)
{
StringBuilder sb = new StringBuilder();
byte[] ba = System.Text.Encoding.Unicode.GetBytes(s);
for (int i = 0; i < ba.Length; i += 2)
{
if (ba[i + 1] == 0)
{
//数字,大小写字母,以及"+-*/._"不变
if (
(ba[i]>=48 && ba[i]<=57)
||(ba[i]>=64 && ba[i]<=90)
||(ba[i]>=97 && ba[i]<=122)
||(ba[i]==42 || ba[i]==43 || ba[i]==45 || ba[i]==46 || ba[i]==47 || ba[i]==95)
)//保持不变
{
sb.Append(Encoding.Unicode.GetString(ba, i, 2));
}
else//%xx形式
{
sb.Append("%");
sb.Append(ba[i].ToString("X2"));
}
}
else
{
sb.Append("%u");
sb.Append(ba[i + 1].ToString("X2"));
sb.Append(ba[i].ToString("X2"));
}
}
return sb.ToString();
}
.cs处理