我使用SQL Server 2005,我尝试存储西里尔字符,但我不能通过尝试运行SQL代码来使用SQL代码:
INSERT INTO Assembly VALUES('Македонски парлиамент број 1','','');
或者从C#发生同样的问题,但是从SQL Server中插入/更新它的工作,它是正常存储的。
列的数据类型为nvarchar
。
答案 0 :(得分:16)
您必须在字符串前添加N前缀。
当您隐式声明字符串变量时,默认情况下将其视为varchar。添加前缀N表示后续字符串是Unicode(nvarchar)。
INSERT INTO Assembly VALUES(N'Македонски парлиамент број 1','','');
以下是一些阅读:
http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html
答案 1 :(得分:0)
我不确定您是在进行静态存储过程还是编写脚本,但是将文本保存到磁盘时可能没有正确编码文本。我碰到了这个,我的问题在PowerShell中通过纠正我保存到磁盘进行osql处理的SQL的编码来解决:
Out-File -FilePath "MyFile.sql" -InputObject $MyRussianSQL -Encoding "Unicode" -Force;
& osql -U myuser -P password -i "MyFile.sql";