我使用以下方法来读取Csv文件内容:
////// Reads data from a CSV file to a datatable /// /// Path to the CSV file ///Datatable filled with data read from the CSV file public DataTable ReadCsv(string filePath) { if (string.IsNullOrEmpty(filePath)) { log.Error("Invalid CSV file name."); return null; } try { DataTable dt = new DataTable(); string folder = FileMngr.Instance.ExtractFileDir(filePath); string fileName = FileMngr.Instance.ExtractFileName(filePath); string connectionString = string.Concat(@"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=", folder, ";"); using (OdbcConnection conn = new System.Data.Odbc.OdbcConnection(connectionString)) { string selectCommand = string.Concat("select * from [", fileName, "]"); using (OdbcDataAdapter da = new OdbcDataAdapter(selectCommand, conn)) { da.Fill(dt); } } return dt; } catch (Exception ex) { log.Error("Error loading CSV content", ex); return null; } }
如果我有一个UTF-8编码的Csv文件,其schema.ini看起来像这样:
[Example.csv] Format=Delimited(,) ColNameHeader=True MaxScanRows=2 CharacterSet=ANSI
如果我在具有Unicode编码的Csv文件中有德语字符,则该方法无法正确读取数据.
我可以对上述读取Unicode Csv文件的方法进行哪些修改?如果没有办法这样做,你能建议哪些Csv阅读代码?
尝试CharacterSet=UNICODE
在schema.ini文件中使用.虽然这在MSDN上没有记录,但它可以根据Microsoft论坛上的这个主题进行操作.