Я думаю, что изменение метода ToByteArray
для использования StreamReader
, соответствующего кодировке, должно сработать в этом случае, хотя, не видя больше кода, я не могу быть уверен.
private byte[] ToByteArray(Stream stream, System.Text.Encoding encoding)
{
using(var sr = new StreamReader(stream, encoding))
{
return encoding.GetBytes(sr.ReadToEnd());
}
}
РЕДАКТИРОВАТЬ
Поскольку вы работаете с данными изображения, вы должны использовать Convert.ToBase64String
для преобразования byte[]
в string
. Затем вы можете использовать Convert.FromBase64String
декодирование, чтобы преобразовать обратно в byte[]
. Причина, по которой encoding.GetBytes
не работает, заключается в том, что в byte[]
могут быть некоторые данные, которые нельзя представить в виде строки для этой кодировки.
private void Parse(Stream stream, Encoding encoding)
{
byte[] allData = ToByteArray(stream);
string allContent = Convert.ToBase64String(allData);
allData = Convert.FromBase64String(allContent);
}