C# FoxPro проблема с русскими символами

Сделал выборку FoxPro ( $"{SELECT klient.name, klient.code_kl as Outercode, klient.code_kl as Code, klient.adress as Address, 'Не задан' as responsiblePerson, IIF(ISNULL(GNAME),Name,GNAME) as JuridicalName, Adress as JuridicalAddress, INN FROM klient WHERE exists(SELECT * FROM KNAK WHERE KNAK.code_nak IN (3,4,5,6,8) AND knak.data_vip between DATE({dateFrom.Year},{dateFrom.Month},{dateFrom.Day}) AND DATE({dateTo.Year},{dateTo.Month},{dateFrom.Day})) AND is_deleted=0 ORDER BY NAME ASC}" )

Русские слова при выборке (JuridicalName, JuridicalAddress, Address, responsiblePerson) преобраруются в нечитаемые символы.

Строка подключения - Provider=VFPOLEDB.1;Codepage=1252;Data Source=C:\\Users\\boris\\Documents\\DBFs

Выборка в C# преобразуется в коллекцию объектов с нечитаемыми русскими словами, когда они там встречаются.

В чем может быть причина, и как это исправить?


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

Автор решения: B.Garin

Эти данные (DBF) созданы не мной. Поэтому я исправил это вот так.

Я удалил локальный экземпляр FoxPro и сделал следующее:

using System.Text;
using System.Data.OleDb;
using Dapper;

class Program
{
    static async Task Main(string[] args)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        IEnumerable<string> strings;

        using (OleDbConnection oleDbConnection = new OleDbConnection("Data Source=C:\\Users\\boris\\Documents\\DBFs;Provider=VFPOLEDB.1;Codepage=1252;"))
        {
            strings = await oleDbConnection.QueryAsync<string>("SELECT name FROM spisok");
        }

        foreach (string s in strings)
        {
            Console.WriteLine(s);
        }
    }
}

Спасибо всем, кто пытался помочь.

→ Ссылка