Как вы сказали, кодировка HTTP POST-запроса по умолчанию - ISO-8859-1. В противном случае вы должны посмотреть на заголовок Content-Type, который может выглядеть как Content-Type: application/x-www-form-urlencoded; charset=UTF-8
.
После того, как вы прочитали опубликованные данные в байтовый массив, вы можете решить преобразовать этот буфер в строку (помните, что все строки в .NET имеют формат UTF-16). Только в этот момент вам нужно знать кодировку.
byte[] buffer = ReadFromRequestStream(...)
string data = Encoding
.GetEncoding("DETECTED ENCODING OR ISO-8859-1")
.GetString(buffer);
И чтобы ответить на ваш вопрос:
Могу ли я использовать Unicode для декодирования
HTTP-запрос в виде байтового массива?
Да, если для кодирования этого байтового массива использовался юникод:
string data = Encoding.UTF8.GetString(buffer);