2017-01-27 24 views
1

これは私の最初の投稿であり、長年の助けをいただきありがとうございました。私はフォーラムを使用していると私は思う、これはここで一番です。これで十分です:-)私は次のコードを持っています:C#dbase IVは特殊文字を読み取る

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ファイルからいくつかのデータを取得しようとしましたが正常に動作しました。しかし、ä、ö、éのような特殊文字がある場合は、疑問符やその他の混乱した文字しか得られません。私は接続文字列に文字セットを直接追加しようとしましたが、成功しませんでした。その後、私はそれを後で変換しようとしましたが、それでも動作しません。私は本当にわかりません。どこにエラーがあり、あなたの誰かが私を助けてくれることを願っています。敬具!

+1

を使用する必要がありますか?暗黙的にエンコーディングを適用する 'drMyDbfFile [5] .ToString()'を実行すると、正しいのでしょうか? – Gusman

+0

はい、現在の行の列5をエンコードします。私のおかげで、それは全体のDBファイルを介してループです。しかし、エンコーディングはうまくいきません:-( – MrProud

答えて

0

なぜ、これらすべてのエンコーディング変換あなたは[]ファイル名に括弧

このproplemをおご覧ください

how-to-access-an-column-with-special-characters

または insert into sql db a string that contain special character

または Working with ADO.net and special characters in SQL

+0

*またはfileName変数のかわりにかっこを意味しますか?これまではfileName varを試してみましたが、うまくいきませんでした。特殊な文字 – MrProud

関連する問題