public static string UnscapeString (string str)
{
int i = str.IndexOf ('%');
while (i != -1 && i < str.Length - 2) {
int c;
if (int.TryParse (str.Substring (i+1, 2), NumberStyles.HexNumber, null, out c))
str = str.Substring (0, i) + (char) c + str.Substring (i + 3);
i = str.IndexOf ('%', i + 1);
}
return str;
}