在SQL Server中保存重音字符

时间:2013-05-16 11:21:41

标签: sql sql-server sql-server-2008

我们接受来自html表单的重音字符,例如Ḿấxiḿứś,当使用hibernate将其保存到数据库中时,字符串变为??xi???

然后我做了SQL更新,尝试将重音词直接写入数据库,结果也是如此。

理想的行为是将dabase设置为dabase。

我正在使用Microsoft SQL Server 2008.

我试图谷歌,有人说我需要将数据库排序规则更改为SQL_Latin1_General_CP1_CI_AI。但我无法从下拉列表中找到这个选项。

3 个答案:

答案 0 :(得分:4)

其中只有一个有效: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;

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

排序不是问题:这是用于nvarchar

的排序和比较

答案 1 :(得分:0)

ALTER TABLE" tablename"

更改栏目"列名称" nvarchar(64)COLLATE SQL_Latin1_General_CP1_CI_AS

答案 2 :(得分:0)

ALTER TABLE table_name ALTER COLUMN coloumn_name NVARCHAR(40)null

如果您正在使用hibernate,那就是您所需要的一切。

我试图更改表格排序,但它可能无效 您必须备份数据,使用新的排序规则创建新数据库 然后弹出数据。

我的数据库设置整理是AS(重音敏感),请确保 你的设置相同