AntiXSS не обеспечивает декодирование - .NET Framework делает это за вас.Действительно, UrlDecode должен на самом деле получить его правильно.
Однако, если вы хотите сделать это вручную, вы можете создать массив char [] такой же длины, что и исходная строка, а затемпереберите строку, ищите% и затем захватываете два символа после, гарантируя, что они действительны в шестнадцатеричном формате, а затем выполните следующее, чтобы получить шестнадцатеричное значение
if ((h >= '0') && (h <= '9'))
{
return (h - '0');
}
if (((h >= 'a') && (h <= 'f')) ||
((h >= 'A') && (h <= 'F')))
{
return ((h - 'a') + 10);
}
Как только вы получите оба значения, вызатем объедините
byte b = (byte) ((firstByte << 4) | secondByte);
и добавьте его в массив, вызвав UTF8Encoding.GetChars ()
(примечание: код находится на моей голове и не проверенправильно)