【发布时间】:2017-05-17 15:31:26
【问题描述】:
我有一个默认排序规则 Latin1_General_CI_AS 的 SQL Server 数据库。
我表的列是nvarchar 或ntext 数据类型。
该数据库适用于可以多语言的网站,必须至少支持波兰语、英语,然后还支持乌克兰语和法语。
我什至很难让它接受波兰语字符。对于nvarchar/ntext 类型的列,我可以手动更改数据库中的字符串以使用波兰语特殊字符,但在使用insert 或UPDATE 语句时,特殊字符的重音将被去除。
例如。
INSERT INTO Some_Table
VALUES( 7, 'aśęóń', 'ąćł', 0.1, 1)
这最终在INSERT 或UPDATE 的第二列和第三列中是“aseón”和“acl”,因此会丢失原始字符。
我尝试设置不同的排序规则,但即使该字段有 Polish_CS_AS,它也不接受插入/更新时的波兰字符。
如何让数据库接受不同的语言字符?
【问题讨论】:
-
你应该使用
VALUES( 7, N'aśęóń', N'ąćł', 0.1, 1)(并且,你应该停止使用ntext,而使用`nvarchar(max)) -
在像
INSERT INTO Some_Table VALUES( 7, N'aśęóń', N'ąćł', 0.1, 1)这样的插入时尝试在列中添加N前缀 -
谢谢大家,现在可以正常使用了。
-
ntext、text和image数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。 See details here
标签: sql-server internationalization multilingual collation polish