【问题标题】:C# dbase IV read special charactersC# dbase IV 读取特殊字符
【发布时间】:2017-01-27 15:08:38
【问题描述】:

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

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() 会隐式应用编码,是不是正确的?
  • 是的,它只会对当前行的第 5 列进行编码。在我的产品中,它是整个数据库文件的循环。但是编码不起作用:-(

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


【解决方案1】:

【讨论】:

  • 您的意思是括号而不是 * 还是在 fileName 变量周围?到目前为止,我围绕 fileName var 进行了尝试,但没有成功。还有一个?而不是特殊的字符
猜你喜欢
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
相关资源
最近更新 更多