2012-05-10 39 views
6

我想在我的网站中使用unicode文本。我在数据库中有nvarchar(max)数据类型来存储数据。当我将unicode文本保存到数据库时,它工作正常。但是,当我尝试执行一些SQL操作的Unicode文本更改为“?????” 例如低于在SQL Server 2008中使用unicode文本

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

结果

sqlunicode

,这是什么解决的查询? 感谢

+0

什么是数据库的默认排序规则? – Oded

+0

@Oded默认排序规则是SQL_Latin1_General_CP1_CI_AS – Paras

回答

10

尝试

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

也许你注意到的SQL Server生成你DDL脚本时使用N任何引用字符串输入。

+0

好点。 Unicode文本需要使用'N'修饰符来限定。 – Oded

1

你有你的数据库排序规则设置为接受这种类型的角色,或者你可以在你选择这样添加的整理子句核对(谷歌告诉我这是一个印地文字符)

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

那不会工作,但我发现这个在BOL为SQL Server 2005:

4的印地文整理已被弃用SQL Server 2005中,因为 Windows 2000的排序表在此SQL Server版本中使用。 排序规则仍然存在于服务器中,但在将来的SQL Server发行版中将不支持 ,并且它不会显示在 :: fn_helpcollat​​ions()中。

5的印地文和Lithuanian_Classic归类是弃用SQL Server 2005中这些排序规则仍然存在于服务器上,但它们将不 在未来的SQL Server版本的支持,而且他们不显示 起来:: fn_helpcollat​​ions()。

为2008:

印地文(印度) - 不可用在服务器级别