Вместо того, чтобы менять лошадей (использовать другой драйвер .csv) или помогать данной лошади, потянув повозку самостоятельно (измените кодировку), вы должны сообщить лошади (стандартный текстовый драйвер ODBC), что она должна знать для выполнения задание путем добавления файла schema.ini:
[withbomgood.txt]
Format=TabDelimited
ColNameHeader=True
CharacterSet=65001
Col1=FrsColümn CHAR
для определения формата withbomgood.txt:
FrsColümn
whätever
, которая является точной копией withbombad.txt; оба файла имеют спецификацию:
FrsColümn
whätever
Если вы сейчас вызываете слегка измененную копию
static void Harun00(string CSVFileName)
{
string CSVFilePath = @"E:\trials\SoTrials\answers\6260911\data";
string CSVConnectionString =
"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" +
CSVFilePath +
";Extensions=asc,csv,tab,txt;Persist Security Info=False;";
using (OdbcConnection Connection = new OdbcConnection(CSVConnectionString))
{
List<string> CSVHeaders = new List<string>();
string SelectQuery = string.Format(@"SELECT TOP 1 * FROM [{0}]", CSVFileName);
OdbcCommand Command = new OdbcCommand(SelectQuery, Connection);
Connection.Open();
OdbcDataReader Reader = Command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
int ColumnCount = Reader.FieldCount;
for (int column = 0; column < ColumnCount; column++)
{
CSVHeaders.Add(Reader.GetName(column));
}
Console.WriteLine(CSVHeaders[0]);
}
}
вашего кода дважды:
static void Main(string[] args)
{
Harun00("withbombad.txt");
Harun00("withbomgood.txt");
}
вы получите:
FrsColümn
FrsColümn
Press any key to continue . . .
, который доказывает, что драйвер будет читать UTF8 с файлом спецификации правильно и без каких-либо дополнительных ADO, если вы следуете правилу: определите таблицы csv в файле schema.ini.