Я пытаюсь преобразовать байтовый массив в строку. Массив байтов включает в себя преамбулу (если использованный кодер имел одну из них), и вы должны указать кодировку по умолчанию, если в байтовом массиве нет преамбулы.
Мой код выглядит так
public static string ArrayToStringUsingPreambleOrDefaultEncoder(byte[] bytes, Encoding defaultEncoder, out Encoding usedEncoder) {
using (var mem = new MemoryStream(bytes))
using (var reader = new StreamReader(mem, defaultEncoder, true)) {
string result = reader.ReadToEnd();
usedEncoder = reader.CurrentEncoding;
return result;
}
}
Но это не так, как я ожидал.
Как заставить StreamReader использовать кодировку, указанную в преамбуле, или кодировку по умолчанию, если преамбула не найдена. Действительно ли мне нужно вручную сравнивать преамбулу ВСЕХ известных кодировщиков с началом массива, чтобы найти правильный?