я читаю файл DBF, используя OLEDB таким образом:ADO.NET OleDB и очень старый Dbase IV файл
[TestMethod]
public void TestMethod2()
{
const string path = @"D:\VL816183.DBF";
var connection = new OleDbConnection(string.Format("Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties=\"dBase IV\"", Path.GetDirectoryName(path)));
connection.Open();
var command = new OleDbCommand(string.Format("select MNO from {0}", Path.GetFileName(path)), connection);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var str = (string)reader["MNO"];
}
}
connection.Close();
}
Все, кажется, в порядке, но есть проблема с строковыми данными. Исходная база данных содержит строки, сохраненные с CodePage = 852, и я не могу найти способ правильно ее прочитать.
Я попытался установить CharSet/CodePage/CharacterSet в расширенные свойства строки подключения, но без везения (на самом деле было исключено исключение: не удалось найти устанавливаемый ISAM).
Я также пытался прочитать его с помощью провайдера «vfpoledb», по-прежнему не повезло.
Например, есть строка «FRANTIŠEK», но переменная str содержит «FRANTIμEK».
Кто-нибудь знает, как это сделать? Thanks
Вы можете сделать это с помощью «Полевого индекса» вместо имени поля, используя считыватель – MethodMan
@DJKRAZE уверен, что я могу, но результаты остаются теми же – 2013-03-26 15:11:50
Проверьте эту ссылку, что код означает, что что-то не настроено правильно http: // www.oocities.org/geoff_wass/dBASE/GaryWhite/dBASE/FAQ/qcp.htm | http://www.cs.cmu.edu/~varun/cs315p/xbase.txt | http://www.manmrk.net/tutorials/database/xbase/dbf.html – MethodMan