2013-02-20 212 views
1

我有两个varcharfirst_namelast_name表。SQL Server 2005:将varchar转换为nvarchar问题

现在我需要将这些列转换为nvarchar以支持UTF-8。

我在这些列的SSMS中选择nvarchar数据类型,当我尝试输入一些UTF-8数据时,我的符号转换为问号。例如,如果我输入йцукен(乌克兰语),它将被转换为??????

什么问题以及如何解决?

谢谢。

+0

你看过http://stackoverflow.com/q/761036/806549 ? – 2013-02-20 16:22:15

+1

SQL Server nvarchar是UTF-16。看到http://support.microsoft.com/kb/232580 – muhmud 2013-02-20 16:26:09

回答

5

当您要将nvarchar文字插入到数据库表中时,您必须使用N'..'前缀

所以使用

INSERT INTO dbo.YourTable(First_Name) 
VALUES(N'йцукен') 

使这个字符串将作为的unicode字符串对待

如果你不使用N'..'符号,你真的插入非Unicode字符串文字 - 这将导致这些转换为?

+1

每一个小帮助。这是我们每天都会忘记的事情... +1 – Kaf 2013-02-20 16:46:08

+0

不幸的是,它不适用于我的情况。即使当我尝试用'N'字符更新表格时,它也会显示问号。例如,UPDATE mytable SET first_name =N'йцукен' WHERE id = '10'将像以前一样保存问号。尽管如此,当我用nvarchar列创建新表时,一切正常。 – user1048261 2013-02-21 09:25:33

相关问题