我根据某些参数编写了一个Outlook加载项来存档电子邮件。
我目前将Outlook.MailItem.Body
属性存储在SQL Server 2008R2的varbinary(max)
字段中。我也在这个专栏上启用了FTS。
目前,我将电子邮件的Body属性存储为数据库中的字节数组,并使用ASCIIEncoder.GetBytes()
函数转换此明文。目前我遇到了一些奇怪的结果,我偶尔会注意到?
字符的撇号和新行。
我有两个问题:
答案 0 :(得分:2)
我不确定FullTextSearch是否在VarBinary列上效果最好,虽然我的直觉说" no"但我可以回答你问题的后半部分。
您获取奇数字符的原因是ASCIIEncoder.GetBytes()将文本视为ASCII,如果您正在编码ISN' T ASCII-的文本,则可能会出现这类错误编码。默认情况下,.NET中的字符串是UTF8,因此您可能会遇到问题。使用Encoding.UTF8.GetBytes()
获取UTF8字符串的字节。
这也回答了第二个问题 - 这个方法对Unicode字符串有用吗?是的,因为你根本不存储字符串。您存储的字节,您的应用程序恰好知道的是编码的Unicode字符串。 SQL不会对它们做任何事情,因为它们只是字节。
答案 1 :(得分:2)
由于您必须支持Unicode字符并仅处理文本,因此您应将数据存储在nvarchar
类型的列中。这将解决你的两个问题:
1。)文本在数据库中保存为可变长度的Unicode字符数据,您不需要字节编码器/解码器来检索数据
2。)见1.)