Проблема с кодировкой с odbc в C# .Net core на linux

Я пишу программу на C# под linux и пытаюсь использовать ODBC для подключения к базе данных. База данных имеет кодировку WIN1251, и при выводе я имею знаки вопросов вместо русских символов.

ОС: Ubuntu

База данных: Interbase

Версия фреймворка: core .net 5.0

Мои попытки решить проблему:

  1. ODBC драйвер работает нормально, командой из консоли LANG=ru_RU.CP1251 luit isql -v DEVART_INTERBASE (запуск с кодировкой WIN1251, параметры подключения точно такие же) я выполнял обращения к базе данных и все символы нормально отображались.
  2. Заменял string login = (string)reader["LOGIN"] на
byte[] buffer = new byte[500];
var byteCount = reader.GetBytes(0, 0, buffer, 0, 500);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string login = Encoding.GetEncoding("Windows-1251").GetString(buffer, 0, (int)byteCount);

опять же все символы отображались нормально. Я бы мог использовать этот способ, но при использовании команды INSERT или UPDATE в базе данных русские символы были неправильно записаны, и как решить эту проблему я не знаю.

  1. Аналогичный код на windows работает без проблем.

Буду рад любым советам.

using System;
using System.Data.Odbc;

namespace net_core {
    class Program {

        static void Main(string[] args) {
            OdbcConnection connection = new OdbcConnection("DRIVER={Devart ODBC Driver for InterBase};Server=10.0.2.2;Database=D:\\InterBase\\gdb\\DATABASE.GDB;Port=3050;User ID=SYSDBA;Password=masterkey;Client Library=/usr/local/lib/libgds.so;Charset=win1251;CharacterSet=win1251;Dialect=3");
            connection.Open();

            var command = connection.CreateCommand();
            command.CommandText="SELECT LOGIN FROM USERS";
            OdbcDataReader reader = command.ExecuteReader();
            reader.Read();
            string login = (string)reader["LOGIN"];
            Console.WriteLine(login);
        }
    }
}

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