Кодировка КОИ7н2 и кодирования в c#

Есть файлы в кодировке Кои-7н2 вида :

введите сюда описание изображения

Приходят такие же файлы ещё и в кодировке 1251:

введите сюда описание изображения

Когда пытабюсь открыть в c# файлы в кодировке кои 7н, выдаёт всякую ерунду, а должен выдавать символы, как в 1251.

Попытался конвертировать, уже всё перепробовал, может есть у кого идеи?

Мой отчаянный код:

foreach (var sourceEncoding in Encoding.GetEncodings())
{
    foreach (var targetEncoding in Encoding.GetEncodings())
    {
      //Русские AAXX и англ AAXX
      if (targetEncoding.GetEncoding().GetString(text).Contains("AAXX") || targetEncoding.GetEncoding().GetString(text).Contains("ААХХ"))
      {
         Console.WriteLine($" {sourceEncoding.CodePage} - {targetEncoding.GetEncoding().GetString(text)} - {targetEncoding.CodePage}");
      }
    }
}

Пример файлов: https://drive.google.com/drive/folders/189JmQQChiqJcTGEUrP6gbXfufnGA0y9x?usp=sharing


Ответы (1 шт):

Автор решения: CrazyElf

У вас зачем-то выставлен старший бит много где в файле, между тем в KOI-7 так быть не может - он 7-битный, как видно из названия. Я просто отрезал старший бит - и всё стало прекрасно показываться даже в UTF-8. Исходник приведу на Питоне, мне так проще, на C# перевести, думаю, не проблема:

with open('22-10-2020_06-06-15.029848', 'rb') as f:
    buffer = f.read()
    for i in range(len(buffer)):
        print(chr(buffer[i] & 0x7f), end='')

Вывод:

AAXX 22061 29848 42598 82205 10137 21035 39740 40059 52006 885// 333 91112=

Обновлено: Добавил C#

byte[] data = File.ReadAllBytes("22-10-2020_06-06-15.029848");
for (int i = 0; i < data.Length; i++)
    data[i] = (byte)(data[i] & 0x7f);
string text = Encoding.UTF8.GetString(data);
→ Ссылка