在SQL Server 2008中使用Unicode文本

8

我希望在我的网站中使用Unicode文本。我在数据库中使用nvarchar(max)数据类型来存储数据。当我将Unicode文本保存到数据库中时,一切正常。但是,当我尝试执行某些SQL操作时,Unicode文本就会变成“?????”。 例如,下面的查询:

declare @unicodetext nvarchar(250)
set @unicodetext='बन्द'
select @unicodetext

结果

sqlunicode

这个问题有什么解决方案吗? 谢谢。


数据库的默认排序规则是什么? - Oded
@Oded 默认排序规则为 SQL_Latin1_General_CP1_CI_AS。 - Paras
2个回答

12

尝试一下

declare @unicodetext nvarchar(250)
set @unicodetext = N'बन्द'
select @unicodetext

你可能已经注意到,当 SQL Server 为你生成 DDL 脚本时,它会将任何带引号的字符串输入都使用 N


不错。Unicode文本需要使用N修饰符来标识。 - Oded

2

您需要将数据库排序规则设置为接受此类型字符的排序规则,或者您可以像这样在选择语句中添加排序规则子句(谷歌告诉我这是印地语字符)。

declare @unicodetext nvarchar(250)
set @unicodetext='बन्द'
select @unicodetext
COLLATE Indic_General_90_CI_AS 

这个不可行,但我在SQL Server 2005的BOL中找到了以下内容:
4. 因为在此SQL Server版本中使用Windows 2000排序表,所以Hindi排序已被弃用。该排序仍存在于服务器上,但将不会在未来的SQL Server版本中得到支持,并且它不会出现在::fn_helpcollations()中。
5. 在SQL Server 2005中,Hindi和Lithuanian_Classic排序已被弃用。这些排序仍然存在于服务器上,但将不会在未来的SQL Server版本中得到支持,并且它们不会出现在::fn_helpcollations()中。
对于2008:
Hindi(印度) - 无法在服务器级别上使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接