これは私の最初の投稿であり、長年の助けをいただきありがとうございました。私はフォーラムを使用していると私は思う、これはここで一番です。これで十分です:-)私は次のコードを持っています: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ファイルからいくつかのデータを取得しようとしましたが正常に動作しました。しかし、ä、ö、éのような特殊文字がある場合は、疑問符やその他の混乱した文字しか得られません。私は接続文字列に文字セットを直接追加しようとしましたが、成功しませんでした。その後、私はそれを後で変換しようとしましたが、それでも動作しません。私は本当にわかりません。どこにエラーがあり、あなたの誰かが私を助けてくれることを願っています。敬具!
を使用する必要がありますか?暗黙的にエンコーディングを適用する 'drMyDbfFile [5] .ToString()'を実行すると、正しいのでしょうか? – Gusman
はい、現在の行の列5をエンコードします。私のおかげで、それは全体のDBファイルを介してループです。しかし、エンコーディングはうまくいきません:-( – MrProud