我在我的項目中使用CSVReader來讀取windows服務中的.csv文件。 我們將.csv文件傳遞給CSVReader來處理文件,它工作正常。 但最近我們決定將csv文件保存到數據庫表並從那裏讀取它。當用戶提交csv文件進行處理時,我們的aspx頁面將讀取csv文件 並將其轉換爲字節數組並將其保存到數據庫。 並且該服務將讀取表並拾取字節數組並將其轉換爲FileStream。 此流傳遞給CSVReader以供進一步工作。 現在它爲最後一列的最後一列拋出錯誤。 它僅在保存並從數據庫中讀取後纔會發生。 我收到以下錯誤。 不知道如何解決這個問題。CSVReader在最後一列最後一列拋出錯誤
「的CSV似乎是接近記錄‘9’字段‘3在位置‘494’當前原始數據。:’腐敗
聽到的是代碼轉換 文件以字節數組.....
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, ','))
什麼是你在存儲數據到列類型? – dash
列類型是varbinary(max) – Henry
所以它不是截斷。當您創建StreamReader時,您正在使用'UTF7'編碼。你確定這是該文件最初編碼的方式嗎?你嘗試過'ASCII'或'UTF8'嗎? – dash