我使用 SQL Server 2005,我尝试存储西里尔字符,但我不能通过尝试运行 SQL 代码来运行这是 SQL Server:
INSERT INTO Assembly VALUES('Македонски парлиамент број 1','','');
或者从 C# 发生同样的问题,但是从 SQL Server 插入/更新列它可以工作并且它可以正常存储。
列的数据类型是nvarchar
。
我使用 SQL Server 2005,我尝试存储西里尔字符,但我不能通过尝试运行 SQL 代码来运行这是 SQL Server:
INSERT INTO Assembly VALUES('Македонски парлиамент број 1','','');
或者从 C# 发生同样的问题,但是从 SQL Server 插入/更新列它可以工作并且它可以正常存储。
列的数据类型是nvarchar
。
您必须在字符串之前添加 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
我不确定您是在执行静态存储过程还是脚本,但是当您将文本保存到磁盘时,文本可能没有正确编码。我遇到了这个问题,通过更正我保存到磁盘以进行 osql 处理的 SQL 的编码,我的问题在 PowerShell 中得到了解决:
Out-File -FilePath "MyFile.sql" -InputObject $MyRussianSQL -Encoding "Unicode" -Force;
& osql -U myuser -P password -i "MyFile.sql";