Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在SQL Server中存储文本以进行全文搜索_C#_Sql Server_Unicode - Fatal编程技术网

C#在SQL Server中存储文本以进行全文搜索

C#在SQL Server中存储文本以进行全文搜索,c#,sql-server,unicode,C#,Sql Server,Unicode,我正在根据某些参数将Outlook加载项写入电子邮件ACD文件 我当前正在SQL Server 2008R2的varbinary(max)字段中存储Outlook.MailItem.Body属性。我还在本专栏中启用了FTS 目前,我将电子邮件的Body属性存储为数据库中的字节数组,并使用ascienceorder.GetBytes()函数转换此明文。目前我遇到了一些奇怪的结果,我注意到撇号和新行中偶尔会出现?字符 我有两个问题: 这是在数据库中存储文本的最佳方法吗?作为字节数组?而电子订单是实现

我正在根据某些参数将Outlook加载项写入电子邮件ACD文件

我当前正在SQL Server 2008R2的
varbinary(max)
字段中存储
Outlook.MailItem.Body
属性。我还在本专栏中启用了FTS

目前,我将电子邮件的Body属性存储为数据库中的字节数组,并使用
ascienceorder.GetBytes()
函数转换此明文。目前我遇到了一些奇怪的结果,我注意到撇号和新行中偶尔会出现
字符

我有两个问题:

  • 这是在数据库中存储文本的最佳方法吗?作为字节数组?而电子订单是实现这一目标的最佳方法吗
  • 我想正确处理Unicode字符串,有什么需要注意的吗

  • 我不确定FullTextSearch是否在VarBinary列上工作得最好,尽管我的直觉是“不”,但我可以回答你问题的后半部分

    获取奇数字符的原因是,ascienceoder.GetBytes()将文本视为ASCII,如果编码的文本不是ASCII编码的,则可能会出现类似的错误。默认情况下,.NET中的字符串是UTF8,因此您可能会遇到问题。使用
    Encoding.UTF8.GetBytes()
    获取UTF8字符串的字节


    这也回答了第二个问题-此方法对Unicode字符串有用吗?是的,因为您根本不存储字符串。您正在存储字节,而您的应用程序恰好知道这些字节是编码的Unicode字符串。SQL不会对它们做任何事情,因为它们只是字节。

    我不确定FullTextSearch是否最适合VarBinary列,尽管我本能地说“不”,但我可以回答你问题的后半部分

    获取奇数字符的原因是,ascienceoder.GetBytes()将文本视为ASCII,如果编码的文本不是ASCII编码的,则可能会出现类似的错误。默认情况下,.NET中的字符串是UTF8,因此您可能会遇到问题。使用
    Encoding.UTF8.GetBytes()
    获取UTF8字符串的字节


    这也回答了第二个问题-此方法对Unicode字符串有用吗?是的,因为您根本不存储字符串。您正在存储字节,而您的应用程序恰好知道这些字节是编码的Unicode字符串。SQL不会对它们做任何事情,因为它们只是字节。

    因为您必须支持Unicode字符并只处理文本,所以您应该将数据存储在类型为
    nvarchar
    的列中。这将解决您的两个问题:

    1.)文本作为可变长度Unicode字符数据保存在数据库中,您不需要字节编码器/解码器来检索数据


    2.)请参见1。)

    由于您必须支持Unicode字符并仅处理文本,因此应将数据存储在
    nvarchar
    类型的列中。这将解决您的两个问题:

    1.)文本作为可变长度Unicode字符数据保存在数据库中,您不需要字节编码器/解码器来检索数据


    2.)参见1。)

    感谢关于varbinary的额外信息,我正在讨论该怎么办。感谢关于varbinary的额外信息,我正在讨论该怎么办。我感觉使用varbinary的最初决定是支持HTML文本,但我不再关心HTML,只希望存储纯文本表示。我可能只是尝试一下这个解决方案将允许存储HTML文本,即使您不需要它。我感觉使用varbinary的最初决定是支持HTML文本,但是我不再关心HTML,只希望存储纯文本表示。我可以尝试一下,这个解决方案将允许存储HTML文本,即使您不需要它。