插入后SQL代码中的西里尔符号不正确

时间:2013-05-26 17:49:00

标签: sql sql-server database c#-4.0 collation

我使用SQL Server 2005,我尝试存储西里尔字符,但我不能通过尝试运行SQL代码来使用SQL代码:

INSERT INTO Assembly VALUES('Македонски парлиамент број 1','','');

或者从C#发生同样的问题,但是从SQL Server中插入/更新它的工作,它是正常存储的。

列的数据类型为nvarchar

2 个答案:

答案 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

https://msdn.microsoft.com/en-IN/library/ms186939.aspx

What is the meaning of the prefix N in T-SQL statements?

答案 1 :(得分:0)

我不确定您是在进行静态存储过程还是编写脚本,但是将文本保存到磁盘时可能没有正确编码文本。我碰到了这个,我的问题在PowerShell中通过纠正我保存到磁盘进行osql处理的SQL的编码来解决:

     Out-File -FilePath "MyFile.sql" -InputObject $MyRussianSQL -Encoding "Unicode" -Force;
     & osql -U myuser -P password -i "MyFile.sql";