это мой первый пост, и я хочу поблагодарить всех за многолетнюю помощь. Это первый раз, когда я использую форум, и я думаю, что здесь лучший. Итак, хватит об этом :-) У меня есть следующий код:
public void ConnectToDBF(string pathToFile, string fileName)
{
string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathToFile + ";Extended Properties=\"dBASE IV;CharacterSet=1251;IMEX=1\"";
using (OleDbConnection con = new OleDbConnection(constr))
{
var sql = "select * from " + fileName;
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
DataSet dsMyDbfFile = new DataSet(); ;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dsMyDbfFile);
con.Close();
DataRow drMyDbfFile = dsMyDbfFile.Tables[0].Rows[0];
string test = drMyDbfFile[0].ToString();
Encoding wind1251 = Encoding.GetEncoding(1251);
Encoding utf8 = Encoding.UTF8;
byte[] wind1251Bytes = wind1251.GetBytes(drMyDbfFile[5].ToString());
byte[] utf8Bytes = Encoding.Convert(wind1251, utf8, wind1251Bytes);
string utf8String = Encoding.UTF8.GetString(utf8Bytes);
}
Я попытался получить некоторые данные из файла dbf, и он отлично работает. Но когда в нем есть специальные символы, такие как ä, ö, é или что-то в этом роде, я получаю только вопросительный знак или другие запутанные символы. Я попытался добавить кодировку непосредственно в строку подключения, но безуспешно. Затем я попытался преобразовать его позже, но он все еще не работает. Я действительно не знаю, где ошибка, и я надеюсь, что кто-нибудь из вас может мне помочь. С уважением!
drMyDbfFile[5].ToString()
, который неявно применит кодировку, разве это не правильно? - person Gusman   schedule 27.01.2017