System.Text.Encoding.ASCII.GetBytes丢失每个字符串的前两个字节

时间:2011-09-20 03:25:32

标签: c# sql-server-2008 text bytearray

我正在尝试将电子邮件的正文从Exchange Web服务电子邮件转换为字节数组,但每次执行此操作时,我都会在将其插入SQL数据库字段后丢失文本的前两个字符类型为image

byte[] emBodyBytes;

foreach (Item item in findResults)
{
 if (item is EmailMessage)
 {
   EmailMessage em = item as EmailMessage;
   emBodyBytes = System.Text.Encoding.ASCII.GetBytes(em.Body.Text.ToString());

   dEmailMessage thisMailMessage = new dEmailMessage  //LINQ-to-SQL
   {
    emmMessage = emBodyBytes   //This is our byte object of the email body string
   }
   emailDB.dEmailMessages.InsertOnSubmit(thisMailMessage);
  }
}

The quick brown fox插入SQL e quick brown fox字段时,image变为image

我有点迷失的地方是转换过程中发生的事情,或者SQL期望为CREATE TABLE [dbo].[dEmailMessages]( [emmMessage] [image] NOT NULL ) 定义的字段引导两个字节。

该字段的定义是

{{1}}

2 个答案:

答案 0 :(得分:2)

也许在System.Text.Encoding.ASCII.GetBytes调用之后立即添加如下内容:

System.IO.File.WriteAllBytes("c:\\SomeFile.txt", emBodyBytes) 

然后在十六进制查看器中查看生成的文件。查看该阶段是否存在缺少的两个字节。至少这允许您验证GetBytes调用是否按预期运行。

答案 1 :(得分:0)

缺少必要的代码点。我建议通过放弃LINQ to SQL并写出SELECT语句并走向读者来简化,看看是否有帮助。它可能不会,但会使诊断更容易。