我有两个varchar
列first_name
和last_name
表。SQL Server 2005:将varchar转换为nvarchar问题
现在我需要将这些列转换为nvarchar
以支持UTF-8。
我在这些列的SSMS中选择nvarchar
数据类型,当我尝试输入一些UTF-8数据时,我的符号转换为问号。例如,如果我输入йцукен
(乌克兰语),它将被转换为??????
。
什么问题以及如何解决?
谢谢。
我有两个varchar
列first_name
和last_name
表。SQL Server 2005:将varchar转换为nvarchar问题
现在我需要将这些列转换为nvarchar
以支持UTF-8。
我在这些列的SSMS中选择nvarchar
数据类型,当我尝试输入一些UTF-8数据时,我的符号转换为问号。例如,如果我输入йцукен
(乌克兰语),它将被转换为??????
。
什么问题以及如何解决?
谢谢。
当您要将nvarchar
文字插入到数据库表中时,您必须使用N'..'
前缀。
所以使用
INSERT INTO dbo.YourTable(First_Name)
VALUES(N'йцукен')
使这个字符串将作为的unicode字符串对待
如果你不使用N'..'
符号,你真的插入非Unicode字符串文字 - 这将导致这些转换为?
每一个小帮助。这是我们每天都会忘记的事情... +1 – Kaf 2013-02-20 16:46:08
不幸的是,它不适用于我的情况。即使当我尝试用'N'字符更新表格时,它也会显示问号。例如,UPDATE mytable SET first_name =N'йцукен' WHERE id = '10'将像以前一样保存问号。尽管如此,当我用nvarchar列创建新表时,一切正常。 – user1048261 2013-02-21 09:25:33
你看过http://stackoverflow.com/q/761036/806549 ? – 2013-02-20 16:22:15
SQL Server nvarchar是UTF-16。看到http://support.microsoft.com/kb/232580 – muhmud 2013-02-20 16:26:09