【发布时间】:2014-07-28 07:31:03
【问题描述】:
我在我的项目中使用 CSVReader 来读取 Windows 服务中的 .csv 文件。 我们将 .csv 文件传递给 CSVReader 以处理文件,它工作正常。 但最近我们决定将 csv 文件保存到数据库表并从那里读取。 当用户提交 csv 文件进行处理时,我们的 aspx 页面将读取 csv 文件 并将其转换为字节数组并将其保存到数据库中。 服务将读取表并获取字节数组并将其转换为 Filestream。 此流被传递给 CSVReader 以进行进一步的工作。 现在它为最后一行最后一列抛出错误。 它仅在保存并从数据库中读取后才会发生。 我收到以下错误。 不知道如何解决这个问题。
“CSV 在位置 '494' 的记录 '9' 字段 '3 附近似乎已损坏。当前原始数据:'
听到的是密码 将文件转换为字节数组.....
try
{
fs = new FileStream(filepath, FileMode.Open);
fsbuffer = new byte[fs.Length];
fs.Read(fsbuffer, 0, (int)fs.Length);
}
从数据库读取到字节数组......
myobject.FileByteArray = ObjectToByteArray(row);
public byte[] ObjectToByteArray(DataRow row)
{
if (row["fileBytearray"] == null)
return null;
try
{
BinaryFormatter bf = new BinaryFormatter();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bf.Serialize(ms, row["fileBytearray"]);
return ms.ToArray();
}
}
Stream fileStream = new MemoryStream(myobject.FileByteArray)
using (CsvReader csv =
new CsvReader(new StreamReader(fileStream, System.Text.Encoding.UTF7), hasHeader, ','))
【问题讨论】:
-
您存储数据的列类型是什么?
-
列类型为 varbinary (max)
-
所以不是截断。创建 StreamReader 时,您使用的是
UTF7编码。你确定这是文件最初的编码方式吗?你试过ASCII或UTF8吗? -
我不知道文件最初是如何编码的。如何找到文件的编码是什么?我尝试使用 ASCII 和 UTF8 仍然是同样的问题
标签: c# csv filestream