私は次のコードスニペットを持っています。これは、世界中の複数の場所から私たちに提供されたCSVファイルをインポートするために使用されます。ファイル形式は同じで、実際にはかなり簡単です。名前、姓、電子メール、いくつかの日付、1つまたは2つのテキスト列です。私が持っている問題は、英語以外の文字、ロシア語、ドイツ語、スペイン語の文字が正しくインポートされていないことです。 DataTableのファイルの内容を見ると、「Андрей」などが生成されるべきときは「ÐнÐ'Ñ€Ðμй」のようになります。私は非常に長い時間を探していて、解決策を見つけることができないようです。ファイルをxlsに保存してからインポートした場合、接続文字列を変更すると正常に動作するため、ジェットエンジンがユニコード文字を処理できるように見えます。どんな助けもありがとう。それが重要な場合私は窓7 64ビットでVS 2010を使用しています。前もって感謝します!OLE CSVでのUnicode文字のインポート
string filename = @"C:\Data\Test.csv";
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data;Extended Properties=""text;CharacterSet=UNICODE;HDR=Yes;FMT=Delimited"";";
string commString = string.Format("Select * from {0}", filename);
DataTable dt = new DataTable();
using (OleDbConnection connection = new OleDbConnection(connString))
{
connection.Open();
using (OleDbDataAdapter da = new OleDbDataAdapter(commString, connection))
{
da.Fill(dt);
}
}
私はパスの変更を除いて書かれたようにあなたのサンプルコードを試してみました。私はメモ帳でtest.csvファイルを作成し、サンプル値をコピーしてUnicodeとして保存しました。私はデバッガでデータテーブルを見て、値が正しいように見えました。だからこそこれはあなたを少しでも助けませんが、それは "それが世界の少なくとも一つのマシンで働いていた"ことを知っていることを奨励するかもしれません。私も64ビットwin7です。私は現時点でVS2005を開いてそこに走らせてしまったが、違いが生じるのではないかと疑う。 –