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

Posted

技术标签:

【中文标题】插入后 SQL 代码中的西里尔符号不正确【英文标题】:Cyrillic symbols in SQL code are not correctly after insert 【发布时间】:2013-05-21 15:38:35 【问题描述】:

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

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

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

列的数据类型为nvarchar

【问题讨论】:

你必须使用 nvarchar/nchar 数据类型加上 N 前缀:... values(N'парлиамент'); 【参考方案1】:

你必须在你的字符串之前添加 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?

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于插入后 SQL 代码中的西里尔符号不正确的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Lumen 中使用西里尔符号(Laravel 提供)?

`这个符号在mysql中的作用

`这个符号在mysql中的作用

re (Python) 中的俄语符号

如果包含西里尔符号,Json RPC 返回错误响应

iOS 中 ID3 标签的正确编码