C#dbase IV读取特殊字符

时间:2017-01-27 15:08:39

标签: c# database-connection special-characters dbf dbase

这是我的第一篇文章,我想感谢大家多年的帮助。这是有史以来第一次,我使用论坛,我想,这里的这个是最好的。所以现在足够了:-)我有以下代码:

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文件中获取一些数据,但它运行正常。但当它中有特殊字符时,如ä,ö,é或类似的东西,那么我只会得到一个问号或其他令人困惑的字符。我试图将charset直接添加到connectionstring,但没有成功。然后我尝试转换它,但它仍然无法正常工作。我真的不知道,错误在哪里,我希望,你们中的任何人都可以帮助我。亲切的问候!