Кодировка из cp866 в cp1251

пишу конвертацию из кодировок, но столкнулся с проблемой. В приложении winForms выводит ошибку, что: No data is available for encoding 866. В консольном приложении нормально переводит, с чем это может быть связано?

string commandText = "SELECT * FROM " + Path.GetFileName(dbfFilePath);
using (OleDbCommand command = new OleDbCommand(commandText, connection))
{
    using (OleDbDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            byte[] bytes = Encoding.UTF8.GetBytes(reader.GetString(3));
            byte[] newBytes = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(866), bytes);
            string newStr = Encoding.GetEncoding(1251).GetString(newBytes);
            textBox10.Text = newStr;
        }
    }
}

Строка подключения:

string connectionStringg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(dbfFilePath) + ";Extended Properties=dBASE IV;charset=866";

Допольнительный код:

string dbfFilePath = "\\\\192.168.0.1\\Centrup\\BAZA\\OSDAL.DBF";
                    string connectionStringg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(dbfFilePath) + ";Extended Properties=dBASE IV";

                    using (OleDbConnection connection2 = new OleDbConnection(connectionStringg))
                    {
                        connection2.Open();

                        string commandText = "SELECT * FROM " + Path.GetFileName(dbfFilePath);
                        using (OleDbCommand command = new OleDbCommand(commandText, connection2))
                        {
                            using (OleDbDataReader reader1 = command.ExecuteReader())
                            {
                                while (reader1.Read())
                                {
                                    string tn = removeZero(reader1.GetString(1));
                                    string str = reader1.GetString(3);
                                    
                                    DateTime date = reader1.GetDateTime(60);
                                    DateTime date1 = reader1.GetDateTime(12);

                                    byte[] bytes = Encoding.UTF8.GetBytes(str);
                                    byte[] newBytes = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(866), bytes);
                                    string newStr = Encoding.GetEncoding(1251).GetString(newBytes);
                                }
                            }
                        }
                    }

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

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

Проблему решил. Необходимо было прописать:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
→ Ссылка