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 шт):
Эти данные (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);
}
}
}
Спасибо всем, кто пытался помочь.