我们接受来自html表单的重音字符,例如Ḿấxiḿứś
,当使用hibernate将其保存到数据库中时,字符串变为??xi???
然后我做了SQL更新,尝试将重音词直接写入数据库,结果也是如此。
理想的行为是将dabase设置为dabase。
我正在使用Microsoft SQL Server 2008.
我试图谷歌,有人说我需要将数据库排序规则更改为SQL_Latin1_General_CP1_CI_AI
。但我无法从下拉列表中找到这个选项。
答案 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(重音敏感),请确保 你的设置相同