Вы должны использовать System.Web.HttpUtility.UrlDecode, а не Encoding.ASCII, чтобы выполнить декодирование.
Вероятно, вам не удастся передать Encoding.Default в качестве второго параметра этому статическому методу.
Вы видите результат HTML-формы POST, которая кодирует значения, как если бы они добавлялись к URL-адресу в виде строки поиска. Следовательно, это набор пар «имя = значение» с разделителями. Любые внеполосные символы кодируются в их шестнадцатеричное значение% xx.
Метод UrlDecode расшифрует все это для вас.
Как уже говорили другие, вам действительно нужно разделить поток на части, он может быть больше, чем 1K.
Строго говоря, вы должны проверить заголовок Content-Type для любого атрибута CharSet =. При наличии необходимо убедиться, что кодировка символа, передаваемая вами в UrlDecode, соответствует этому CharSet (например, если CharSet = UTF-8, тогда используйте Encoding.UTF8).