Вы используете message.Length
, который возвращает количество символов в строке, но вы должны использовать номер байтов для чтения. Вы должны использовать что-то вроде:
byte[] messageBytes = uniEncoding.GetBytes(message);
stringAsStream.Write(messageBytes, 0, messageBytes.Length);
Затем вы читаете один байт и ожидаете получить от него символ, просто приведя к char
. UnicodeEncoding
будет использовать два байта на символ.
Как говорит Джастин, вы также не пытаетесь вернуться к началу потока.
Вообще-то, я боюсь, что здесь все не так. Пожалуйста, дайте нам более широкую картину, и мы можем помочь вам решить, что вы должны действительно делать. Использование StreamWriter
для записи, а затем StreamReader
для чтения вполне возможно, что вы хотите, но мы не можем действительно отличить только небольшой фрагмент кода, который вы показали.