在SQL Server中保存重音字符

Jun*_*Liu 2 sql sql-server sql-server-2008

我们接受带重音符号的字符(例如??xi???html格式的字符),当使用hibernate将其保存到数据库时,字符串变成??xi???

然后,我进行了一次SQL更新,试图将重读单词直接写到数据库中,结果还是一样。

所需的行为是按原样设置到数据库中。

我正在使用Microsoft SQL Server 2008。

我试图用Google搜索它,有人说我需要将数据库排序规则更改为SQL_Latin1_General_CP1_CI_AI。但是我从下拉列表中找不到此选项。

gbn*_*gbn 5

其中只有一种有效:nvarchar数据类型和Unicode常量的N前缀。

DECLARE 
    @foo1 varchar(10) = '??xi???', 
    @foo2 varchar(10) = N'??xi???', 
    @fooN1 nvarchar(10) = '??xi???', 
    @fooN2 nvarchar(10) = N'??xi???';

SELECT @foo1, @foo2, @fooN1, @fooN2;
Run Code Online (Sandbox Code Playgroud)

您必须确保所有数据类型都是从头到尾的nvarchar(列,参数等)

排序规则不是问题:这是用于nvarchar的排序和比较