OleDbDataReader 从 csv 文件读取时附加非 ascii 字符
OleDbDataReader attaches non-ascii charaters when reading from csv file
我有成功连接到 csv 文件并将数据读入 OleDbDataReader 的代码。唯一的问题是它在文件开头附加了一些奇怪的字符(“”)。如果我以文本形式打开文件,我没有看到任何奇怪的字符。
如何避免将这些字符带入我的 DataReader?
下面是我使用的代码:
connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0; Data Source='{SourceFileDirectory}'; Extended Properties = \"text;HDR=YES;FMT=Delimited(,);\"";
sql = $"select * From [{fileName}]";
using (var oledbConn = new OleDbConnection(connectionString))
{
using (var cmd = oledbConn.CreateCommand())
{
oledbConn.Open();
cmd.CommandText = sql;
using (OleDbDataReader reader = cmd.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string columnName = reader.GetName(i);
}
}
}
}
我认为是文件的字符集编码。
您应该从 Notepad++ 等程序中检查编码,然后更改它(UTF-8 应该没问题)
顺便说一下,我建议你使用 File.ReadAllLines 方法并用分隔符
分割每一行
我有成功连接到 csv 文件并将数据读入 OleDbDataReader 的代码。唯一的问题是它在文件开头附加了一些奇怪的字符(“”)。如果我以文本形式打开文件,我没有看到任何奇怪的字符。
如何避免将这些字符带入我的 DataReader?
下面是我使用的代码:
connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0; Data Source='{SourceFileDirectory}'; Extended Properties = \"text;HDR=YES;FMT=Delimited(,);\"";
sql = $"select * From [{fileName}]";
using (var oledbConn = new OleDbConnection(connectionString))
{
using (var cmd = oledbConn.CreateCommand())
{
oledbConn.Open();
cmd.CommandText = sql;
using (OleDbDataReader reader = cmd.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string columnName = reader.GetName(i);
}
}
}
}
我认为是文件的字符集编码。
您应该从 Notepad++ 等程序中检查编码,然后更改它(UTF-8 应该没问题)
顺便说一下,我建议你使用 File.ReadAllLines 方法并用分隔符
分割每一行