私はこのようにOleDbを使用してDBFファイルを読んでいます:
[TestMethod]
public void TestMethod2()
{
const string path = @"D:\VL816183.DBF";
var connection = new OleDbConnection(string.Format("Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties=\"dBase IV\"", Path.GetDirectoryName(path)));
connection.Open();
var command = new OleDbCommand(string.Format("select MNO from {0}", Path.GetFileName(path)), connection);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var str = (string)reader["MNO"];
}
}
connection.Close();
}
すべて問題ないようですが、文字列データに問題があります。ソースデータベースにCodePage=852で保存された文字列が含まれているため、正しく読み取る方法が見つかりません。
CharSet / CodePage / CharacterSetを接続文字列の拡張プロパティに設定しようとしましたが、運がありませんでした(実際、例外がスローされました:インストール可能なISAMが見つかりませんでした)。
また、「vfpoledb」プロバイダーを使用して読み込もうとしましたが、まだ運がありません。
たとえば、文字列「FRANTIŠEK」がありますが、str変数には「FRANTIµEK」が含まれています。
誰かがそれを行う方法を知っていますか?ありがとう