【发布时间】:2016-08-26 05:55:26
【问题描述】:
我在将 SQL CLR 与 unicode(希伯来语和俄语文本)集成时遇到问题。作为测试,我在 Visual Studio 中使用以下 CLR 存储过程制作了一个简单的数据库项目:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void TestProc ()
{
//Console.OutputEncoding = System.Text.Encoding.Unicode;
Trace.WriteLine("Unicode test: blip");
Trace.WriteLine("Unicode test: בליפ");
Trace.WriteLine("Unicode test: Блип");
SqlContext.Pipe.Send("Unicode test: blip");
SqlContext.Pipe.Send("Unicode test: בליפ");
SqlContext.Pipe.Send("Unicode test: Блип");
}
发布到测试数据库并在SQL server中执行存储过程:
EXEC dbo.TestProc;
跟踪输出和 SQL 服务器消息都将非英文字符替换为 '????'。
我认为 SQL Server 和 C# 都可以使用 unicode。在 Windows 窗体项目中使用 unicode,例如通过将非英文文本添加到文本框,可以正常工作。
我该如何解决这个问题?有没有我遗漏的设置?
此问题涉及以下内容:How to pass nvarchar (non-English) to CLR (C#) stored procedure?
【问题讨论】:
-
我用你的代码测试过,也得到了“????”对于希伯来语和俄语,即使我将数据库的默认排序规则更改为
Hebrew_100_CI_AS(这不是必需的,只是为了测试)。明天我会再看看这个。 -
哦,如果它是相关的,我还尝试发送只包含希伯来字符/只包含俄语的字符串并且得到了所有 ????,所以问题不在于混合不同的代码页(我不'不知道这是不是一件事)。
标签: .net sql-server unicode character-encoding sqlclr